如何判断popen()是否成功?

时间:2011-12-20 21:19:05

标签: c++ c shell popen

如何知道popen()成功/完成运行shell还是失败了?

3 个答案:

答案 0 :(得分:6)

popen return value

  

成功完成后,popen()将返回一个指向open的指针   可用于读取或写入管道的流。否则,它   应返回空指针,并可设置errno以指示错误。

fp = popen("ls *", "r");
if (fp == NULL)
    /* Handle error */;

答案 1 :(得分:3)

假设您的意思是在C代码中运行popen,您可以查看手册页。它说popen如果失败则返回NULL,否则返回文件流。

答案 2 :(得分:1)

公认的答案并不是确定的。

例如,要求popen()执行无效的命令或图像只会返回一个有效的文件指针(没有要读取的内容)。同时,从外壳程序得到的错误消息将重定向到父级的stderr

popen()在无法生成外壳时确实会返回NULL,这在通常情况下是不寻常的情况。