我遇到了 popen 的问题(我在 CentOS 机器上使用它)。
代码是这样的(_oss 是一个 ostringstream):
...
FILE* lp_pipe = popen("/opt/scripts/myscript.php", "r");
if(!lp_pipe) {
return false;
}
char l_buffer[256];
while(!feof(lp_pipe))
{
if(fgets(l_buffer, 256, lp_pipe) != NULL)
_oss << l_buffer;
}
pclose(lp_pipe);
....
现在这工作正常,直到有人更改了 php 脚本。当我从命令行运行脚本时,我仍然看到预期的结果,但是代码不再起作用。第一次fgets
调用它现在返回 NULL 然后feof(lp_pipe)
返回 1