리눅스 / linux proc / proc file
/proc file system
/proc
file system 은 kernel 또는 kernel module 이 다른 process 에게 정보를 알려주기 위해 만들어졌다.[ref. 1, 2]
여기서는 ref. 2 의 source code 를 가지고 설명하려 한다.
우리는 create_proc_entry
함수를 호출해서, 내가 원하는 파일을 /proc
에 만들 수 있다.
만약 자신이 kernel module 을 만들었으면, module 의 시작점에 create_proc_entry
를 호출해서 /proc 에 자신의 process 이름을 만들어 놓으면 된다. 여기서는 그 이름을 helloworld 라고 하자.
그러면 다른 process 가 이 /proc/helloworld
를 read 할 수 있다. 간단하게 cat /proc/helloworld
를 할 수 있다. 마치 file 처럼.
단순한 file 이라면, 그냥 그 file 의 내용을 보여줄 것이다. 그런데 이것은 file 은 아니다. 그래서 어떤 내용을 보여줘야 할 지 정해줘야 한다. 즉, read 라는 command 가 올 때 어떤 동작을 하라고 지정해 줘야 한다. 그것을 ->read_proc
라는 변수에 지정해 주게 된다.(아래 code 참고)
// from ref. 2
int
procfile_read(char *buffer,
char **buffer_location,
off_t offset, int buffer_length, int *eof, void *data)
{
...
}
int init_module()
{
...
Our_Proc_File = create_proc_entry("helloworld", 0644, NULL);
...
Our_Proc_File->read_proc = procfile_read;
댓글 없음:
댓글 쓰기