Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ popen-fgets后的即时EOF_C++_C_Posix - Fatal编程技术网

C++ popen-fgets后的即时EOF

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方面的专家

我的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方面的专家。我能看到的只是它调用了“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);

  ....