我試圖以定期的間隔讀取proc文件/ proc/stat,但我想避免每次我想訪問它時都必須打開和關閉proc文件。如何保持文件句柄在退出函數後在c中打開
我想以某種初始化函數打開文件,然後繼續在其他函數中使用它,然後關閉它。
似乎通過函數打開的文件句柄在函數退出時關閉 如何讓它保持打開狀態?
請讓我知道我是否應該在一些其他的方式做的什麼,我試圖做
樣本:在C
#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;
}
該文件將保持打開狀態直到您調用'fclose',您不需要... – Macmade 2015-02-05 22:20:14
爲什麼你有C++標記?也就是說,你傳遞了被複制的指針,對一個副本的更改對原始文件沒有影響。研究「引用參考」。 – 2015-02-05 22:20:20
只是一個側面說明:你錯過了包含'sleep()'的''。省略它不便攜。 –
2015-02-05 22:21:55