【问题标题】:return value of system() in CC中system()的返回值
【发布时间】:2012-01-29 01:24:22
【问题描述】:

我在 C 中使用system() 命令来执行类似sc query mysqlnet start mysql 的命令。

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

我的问题是:我可以得到它的返回值列表吗?比如如果命令无效会返回什么,或者执行不成功的返回值是什么?我想根据system()的返回值做不同的事情。

【问题讨论】:

标签: c system return


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您只需man system 了解更多关于system()的信息

    DESCRIPTION system() 通过调用 /bin/sh -c 命令执行命令中指定的命令,并在命令执行完毕后返回 完全的。在执行命令的过程中,SIGCHLD 会被阻塞, 并且 SIGINT 和 SIGQUIT 将被忽略。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-27
        • 2014-09-08
        • 2012-04-23
        • 2012-06-11
        相关资源
        最近更新 更多