当前位置: 技术问答>linux和unix
(在线等)问个关于实时读取文件内容的问题
来源: 互联网 发布时间:2016-09-18
本文导语: #include int main() { FILE *ff; FILE *fp; char buffer[1024]; fp = fopen("/root/ppp","r"); popen("tail -f /proc/net/nf_conntrack>>ppp","r"); while(1) { while(fgets(buffer,500,fp)!=NULL) { printf("%sn",buffer); } } return 0; } 我的本机是一个nat。ppp文件是在不断更...
#include
int main()
{
FILE *ff;
FILE *fp;
char buffer[1024];
fp = fopen("/root/ppp","r");
popen("tail -f /proc/net/nf_conntrack>>ppp","r");
while(1)
{
while(fgets(buffer,500,fp)!=NULL)
{
printf("%sn",buffer);
}
}
return 0;
}
我的本机是一个nat。ppp文件是在不断更新的,为什么我不能实时的读取呢?就是 while(1)每次循环后就停在那里了?即使ppp文件有新的内容进来,也不进行读取了。是文件指针的问题么?谢谢回答!
(注:tail -f /proc/net/nf_conntrack>>ppp 此语句没有问题,可以使ppp文件实时更新)
|
fgets默认是读取一行。
不要使用fgets(),
用fread()试试
不要使用fgets(),
用fread()试试
|
这个问题你看能不能这样。
while(1)
{
while ( fgets(buffer,500,fp)!=NULL)
{
printf("%sn",buffer);
}
sleep(1);
}
每次读到结尾的时候sleep 1秒,不然的话,你程序会退出的,嘿嘿
while(1)
{
while ( fgets(buffer,500,fp)!=NULL)
{
printf("%sn",buffer);
}
sleep(1);
}
每次读到结尾的时候sleep 1秒,不然的话,你程序会退出的,嘿嘿
|
你用的带缓冲的I/O函数,你试试不带缓冲的read().