본문 바로가기

지식/system

커널에서 파일 열고 읽기관련

리눅스 커널 FAQ

[전체 목록 보기] [커널 프로그래밍 심화 목록 보기]

모듈에서 파일 읽고 쓰기
Writer: 이호 (flyduck@linuxkernel.net) Date & Time: 2003-03-26 15:03:16

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