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;
}