리눅스 커널 FAQ
[전체 목록 보기] [커널 프로그래밍 심화 목록 보기]
모듈에서 파일 읽고 쓰기 |
|
Q: 커널에서 파일을 열고 읽으려고 어떻게 하나요?
A: 커널에서 파일을 읽는 것은 좋은 생각은 아니지만 꼭 해야 하는 경우가 있습니다. 대표적인 것으로 커널모드에서 web service를 제공하는 khttpd가 있습니다. 다음은 커널에서 파일을 읽는 예제입니다. void ReadFile(char *filename, int StartPos) { struct *filp; char *Buffer; mm_segment_t oldfs; int BytesRead; Buffer = kmalloc(4096, GFP_KERNEL); if (IS_ERR(filp) || (filp == NULL)) return; /* Or do something else */ if (filp->f_op->read == NULL) return; /* File(system) doesn't allow reads */ /* Now read 4096 byes from position "StartPos" */ filp->f_pos = StartPos; oldfs = get_fs(); set_fs(KERNEL_DS); BytesRead = filp->f_op->read(filp, Buffer, 4096, &filp->f_pos); set_fs(oldfs); /* Close the file */ fput(filp); } 위 코드는 http://www.fenrus.demon.nl/kernel.html에서 인용하였습니다.
by flyduck 2000/06/08
감사... (2003-06-03 00:10:54)
if (IS_ERR(filp) || (filp == NULL))위에 아래 내용을 빼먹은것 같습니다.
--> filp = filp_open(Filename,00,O_RDONLY);
감사... (2003-06-03 00:11:08)
if (IS_ERR(filp) || (filp == NULL))위에 아래 내용을 빼먹은것 같습니다.
--> filp = filp_open(Filename,00,O_RDONLY);
감사... (2003-06-03 00:11:13)
if (IS_ERR(filp) || (filp == NULL))위에 아래 내용을 빼먹은것 같습니다.
--> filp = filp_open(Filename,00,O_RDONLY);
Add a comment | |