如何读取system()函数创建的子进程的错误?

时间:2016-10-15 14:42:31

标签: c linux unix

我正在使用以下代码

system("gcc -c main.c -o main.o");
system("gcc -c add.c -o add.o");
system("gcc  main.o add.o -o Output.exe");

此代码通常始终执行所有语句。如果代码中有任何错误,我想停止执行,即如果main.c中有错误,则不应执行以下两个语句。 如果add.c有错误,那么第三个不应该执行。 我发现的一个建议是使用函数设置的errno值,那么如何做到这一点? 我们知道system()根据手册页使用fork()创建一个子节点 所以我想读一下孩子的错误价值!

2 个答案:

答案 0 :(得分:1)

系统返回命令的退出状态。所以你可以这样做:

error = system("gcc -c main.c -o main.o");
if (error) {
    // report error
}

答案 1 :(得分:1)

man system中的有用文档告诉您函数返回的内容:

  

如果所有系统调用都成功,则返回值是用于执行命令的子shell的终止状态。 (shell的终止状态是它执行的最后一个命令的终止状态。)

您应该始终检查标准库函数的返回值,特别是如果您发现自己想知道它们是否有效。