c - popen() 对所有命令都是成功的

标签 c fopen popen fgets

无论在 popen() 中传递什么“cmd”字符串,对我来说都不会失败

所以即使对于随机的“cmd”字符串,fp 也永远不会为 NULL。

FILE *fp;
char path[1035];
char cmd = "randomrandomrandom";
fp = popen(cmd, "r");

if (fp == NULL) {
    //Handle Error
    exit(1);
}
while (fgets(path, sizeof(path)-1, fp) != NULL) {
    printf("%s", path);
}
pclose(fp);

最佳答案

popen 运行 shell 的实例。启动 shell 通常会成功。您需要确定它是否已成功终止popen 本身不能这样做,但 pclose 可以:它返回子进程的状态(如果发生另一个错误,则返回 -1)。

因此,为了验证命令是否已成功执行,需要检查popenpclose 的返回值。

关于c - popen() 对所有命令都是成功的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46718321/

相关文章:

python - "No such file or directory"sp.Popen 模块

python - 从子进程打印 popen 标准输出时出现问题

c - 将大型二进制数据从 Lua 传递到 C 的最佳方法

PHP扩展库依赖

c - 使用 GDB 更改 for 循环条件?

c - 读入文件c小错误大问题

c - 在C中发送图像文件

c++ - WinAPI EM_STREAMOUT 崩溃

php - 检索部分网页

python - subprocess.Popen 简单代码不允许我执行 cd(更改目录)