用 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");
我正在学习与用户级程序通信的内核模块,最初是用
打开文件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");