代码之家  ›  专栏  ›  技术社区  ›  Deepansh Jagga

popen()对所有命令都成功

  •  1
  • Deepansh Jagga  · 技术社区  · 7 年前

    无论在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);
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   n. m. could be an AI    7 年前

    popen 运行的实例 . 启动shell通常会成功。你需要确定它是否 结束 成功地 波本 它本身无法做到这一点,但 pclose can:返回子进程的状态(如果发生另一个错误,则返回-1)。

    因此,为了验证命令是否已成功执行,需要检查两者的返回值 波本 P关闭 .

        2
  •  1
  •   information_interchange    7 年前

    它的表现似乎与预期相符: http://pubs.opengroup.org/onlinepubs/009695399/functions/popen.html

    如您所见,popen只有在其内部 pipe 命令失败--无法打开流。例如,所有文件描述符都在使用中