C中system()的返回值

时间:2011-12-28 09:32:03

标签: c system return

我在C中使用system()命令执行sc query mysqlnet start mysql等命令。

如果参数为空指针,则在cmd处理器正常时返回1,否则返回0.成功执行命令后返回0.

我的问题是:我可以获得其返回值列表吗?就像命令无效或返回值不成功时返回的内容一样?我想根据system()的返回值做不同的事情。

3 个答案:

答案 0 :(得分:11)

您需要做的只是man system了解有关system()

的更多信息
  

说明 system()通过调用/ bin / sh -c命令执行命令中指定的命令,并在命令执行后返回   完成。在执行命令期间,SIGCHLD将被阻止,   并且将忽略SIGINT和SIGQUIT。

     

返回值错误时返回的值为-1(例如fork(2)失败),否则返回命令的返回状态。后者   返回状态采用wait(2)中指定的格式。因此,退出   该命令的代码将是WEXITSTATUS(状态)。如果/ bin / sh可以   不执行,退出状态将是一个命令的退出状态   出口(127)。如果command的值为NULL,则system()返回非零值   如果shell可用,如果没有则为零。

答案 1 :(得分:9)

docs 如果为要执行的命令创建新进程失败,则state system()返回-1,否则返回执行命令的退出代码。这是在shell中执行相同命令后,可以使用unix中的echo $?或Windows中echo %ERRORLEVEL%检索的相同值。因此,如果要处理返回值,则必须查看执行的命令返回的内容。

答案 2 :(得分:4)

system()返回您开始的进程的退出代码。

退出代码通常只有退出代码为0表示成功而非零表示失败的约定。对于各种退出代码的实际含义,它们特定于每个程序,然后是程序员的心血来潮。您将不得不查找正在运行的特定程序的文档(虽然通常没有记录,因此您必须阅读源代码)