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

use*_*856 3 c c++ shell popen

你怎么知道popen()成功/完成运行shell还是失败了?

Igo*_*Oks 6

popen返回值:

成功完成后,popen()将返回一个指向开放流的指针,该指针可用于读取或写入管道.否则,它将返回一个空指针,并可能设置errno来指示错误.

fp = popen("ls *", "r");
if (fp == NULL)
    /* Handle error */;
Run Code Online (Sandbox Code Playgroud)

  • 请记住,shell运行的命令可能会失败,也许会尝试"cat"一个不存在的文件.在这种情况下,`popen`是成功的.你需要使用`pclose`来获取shell的返回值. (2认同)