我正在尝试定期读取 proc 文件 /proc/stat ,但我想避免每次要访问它时都必须打开和关闭 proc 文件。
我想以某种 init 函数打开文件,然后继续在其他函数中使用它,然后再关闭它。
当函数退出时,函数打开的文件句柄似乎关闭了如何保持打开状态?
请让我知道我是否应该以其他方式这样做
我正在尝试做的示例:
#include <stdio.h>
int printer(FILE* fin)
{
/* I am getting fin as NULL */
if(!fin)
return 1;
char buf[16*1024];
rewind(fin);
size_t sz = fread(buf, 1, sizeof(buf), fin);
if (sz) {
buf[sz]=0;
printf(buf);
}
return 0;
}
int opener(FILE *fin)
{
fin = fopen("/proc/stat", "r");
if (!fin) {
perror("fopen");
return 1;
}
return 0;
}
int main() {
FILE *fin;
/*
* I know it works if I open the file handle in here instead of
* in another function but I want to avoid this
*/
if(opener(fin))
{
printf("ERROR1\n");
return 0;
}
while(1) {
if(printer(fin))
{
printf("ERROR2\n");
break;
}
sleep(1);
}
return 0;
}