首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

popen()函数的有关问题

2012-02-12 
popen()函数的问题以下是我的程序中有关popen()函数的一段内容if((proc_fppopen( psaux ,r ))NULL)

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了, 所以会出错.

热点排行