C替代fputs()/ fgets()with open()

时间:2016-03-18 15:49:49

标签: c kernel-module fgets fcntl

我正在学习与用户级程序通信的内核模块,最初是用

打开一个文件
FILE *pFile = fopen(...)

并用

写信给它
char *str = malloc(10);
fputs(str, pFile);

但是现在我需要使用#include <fcntl.h>中的功能来尝试一些异步通知,而我使用的示例使用

int pFile;
pFile = open("/dev/mymodule", O_RDWR);

我认为我无法再使用fputs()fgets(),因为它需要FILE *ptr而我现在有一个int。我想我应该使用write()read()代替。

这是怎么回事?

write(pFile, str,  sizeof(str));

char line[256];
    while (read(pFile, line, 256) != NULL) {
            printf("%s", line);
        }

1 个答案:

答案 0 :(得分:5)

您可以根据文件描述符FILE*打开fdopen()

FILE *file = fdopen(pfile, "rw");

参考:fdopen - associate a stream with a file descriptor