我正在使用以下代码
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()创建一个子节点 所以我想读一下孩子的错误价值!
答案 0 :(得分:1)
系统返回命令的退出状态。所以你可以这样做:
error = system("gcc -c main.c -o main.o");
if (error) {
// report error
}
答案 1 :(得分:1)
man system
中的有用文档告诉您函数返回的内容:
如果所有系统调用都成功,则返回值是用于执行命令的子shell的终止状态。 (shell的终止状态是它执行的最后一个命令的终止状态。)
您应该始终检查标准库函数的返回值,特别是如果您发现自己想知道它们是否有效。