【问题标题】:What is echo $? in linux terminal? [duplicate]什么是回声$?在linux终端? [复制]
【发布时间】:2016-05-29 05:35:01
【问题描述】:

我已经尝试过这些命令。

~$top
(ctrl + z)stopped the process
~$echo $?
147
~$top
(ctrl + c)killed the process
~$echo $?
0

这里发生了什么,请解释它以及为什么它显示一些恒定值。这些值的含义是什么。

【问题讨论】:

标签: linux


【解决方案1】:

$? 是上次运行进程的返回码。 0 表示没有发生错误。其他值表示某种异常情况。

128 及以上的值通常代表某种信号。 147 - 128 = 19,表示程序收到信号 19(Linux 上的SIGSTOP)。现在,通常按 ^Z 会发送SIGTSTP(与SIGSTOP 不同的信号),这可能意味着top 捕获了该信号,进行了一些(可能与终端相关的)清理,并重新发出SIGSTOP 以实际暂停程序。

top 还捕获了SIGINT(通常在按 ^C 后发出),进行清理并干净退出(退出值为 0)。


您可以运行kill -l 来查看当前平台的所有信号编号。请注意,不同平台的数字不同;例如,SIGSTOP 在 Darwin 上是 17,在 Linux 上是 19。

【讨论】:

    【解决方案2】:

    echo $?返回最后执行命令的返回值(退出状态)(0通常为success)。

    【讨论】:

    • 嗨,我的 cpp 程序应该返回 1234 但 echo $?返回 210,不回显 $?假设也返回 1234?
    猜你喜欢
    • 2013-11-08
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多