C语言中system()函数的返回值是什么?

17
我在 C 中使用 system() 命令来执行像 sc query mysql 或者 net start mysql 这样的命令。
如果参数是空指针,则返回值为 1,如果 cmd 处理器正常,则返回值为 0。成功执行该命令时,返回值为 0。
我的问题是:我能否获取其返回值列表?例如,如果命令无效,它将返回什么,或者在执行失败时返回值将是什么?我想根据 system() 的返回值执行不同的操作。

1
可能是 system() 返回代码 的重复问题。 - CDahn
3个回答

13

依据文档,system()函数返回值为-1表示创建新进程执行命令失败,否则返回命令执行的退出码。这个退出码可以在Unix中使用echo $?或在Windows中使用echo %ERRORLEVEL%来获取。因此,如果您想处理返回值,必须查看执行的命令返回了什么。


11

只需执行 man system 即可了解更多关于system()的信息。

描述 system() 函数通过调用 /bin/sh -c command 执行由 command 指定的命令,并在命令完成后返回。在命令执行期间,SIGCHLD 将被阻塞,而 SIGINT 和 SIGQUIT 将被忽略。

返回值 如果发生错误(例如fork(2)失败),则返回值为-1;否则返回命令的返回状态。这个返回状态的格式是wait(2)指定的格式。因此,命令的退出代码将是WEXITSTATUS(status)。如果无法执行/bin/sh,则退出状态将是一个执行exit(127)的命令的状态。如果command的值为NULL,则system()返回非零值(如果shell可用)和零(如果不可用)。


5

system()函数返回您启动的进程的退出代码。

退出代码通常只有一个约定,即退出代码为0表示成功,非零表示失败。对于各种退出代码的实际含义,它们特定于每个程序,并且往往由程序员决定。您需要查找运行的特定程序的文档(虽然往往没有记录,因此您需要阅读源代码)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接