C++ popen-fgets后的即时EOF
我的popen有问题(我在CentOS机器上使用它) 代码是这样的(oss是一个ostringstream):C++ popen-fgets后的即时EOF,c++,c,posix,C++,C,Posix,我的popen有问题(我在CentOS机器上使用它) 代码是这样的(oss是一个ostringstream): 。。。 文件*lp_pipe=popen(“/opt/scripts/myscript.php”,“r”); 如果(!lp_管道){ 返回false; } 字符l_缓冲区[256]; 而(!feof(低压管道)) { 如果(fgets(l_缓冲区,256,lp_管道)!=NULL) _oss可能是脚本被修改了,所以它是用stderr而不是stdout编写的?我不是php方面的专家
。。。
文件*lp_pipe=popen(“/opt/scripts/myscript.php”,“r”);
如果(!lp_管道){
返回false;
}
字符l_缓冲区[256];
而(!feof(低压管道))
{
如果(fgets(l_缓冲区,256,lp_管道)!=NULL)
_oss可能是脚本被修改了,所以它是用stderr而不是stdout编写的?我不是php方面的专家。我能看到的只是它调用了“echo”…在popen调用中使用2>&1会包括stderr吗?我怀疑它会。在我担心之前,我会在命令行上测试它是在写入stdout、stderr还是同时写入两者。再看看,我想知道问题是否不是有人删除了脚本开头的行,说它需要调用PHP可执行文件来运行脚本。I发现了它是什么。我的好同事改变了PHP文件的文件权限。我可以从命令行读取它,但是我所建的C++程序不能。对不起,打扰了,谢谢你的考虑。
...
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);
....