用 open() 替代 fputs()/fgets()

C alternative to fputs()/fgets() with open()

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

打开文件
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);
        }

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

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

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