popen()函数的问题
以下是我的程序中有关popen()函数的一段内容
if((proc_fp = popen( "ps aux ", "r ")) == NULL)
{
cout < < "popen error\n ";
return -1;
}
问题是,我在程序运行了一段时间之后,程序就报错,输出一堆的:popen error.
可是刚开始运行的还挺好的呀,问题出在哪里呢?
[解决办法]
if((proc_fp = popen( "ps aux ", "r ")) == NULL)
{
cout < < "popen error\n ";
return -1;
}
这段代码输出一次popen error就会马上退出,你输出一堆popen error,肯定不是这段代码的原因。
建议留意popen error之前的日志,那时候在做什么,输出了什么,是不是每次都是执行固定时间后出错
[解决办法]
if((proc_fp = popen( "ps aux ", "r ")) == NULL)
{
cout < < "popen error\n ";
return -1;
}
======
这样写有什么用,改为perror( "popen "),就能知道错误原因了,一个可能的原因是没有popen后没有忘记调用pclose,结果超过了进程能文件描述符限制。
[解决办法]
在执行pclose之前就再次popen了, 所以会出错.