【发布时间】:2011-01-19 13:58:35
【问题描述】:
我有一个 bash 脚本,我在其中使用 $? 检查上次运行命令的退出代码?变量,但现在我正在执行一个 C 程序(来自该脚本),如果程序成功执行,则返回 0。有什么方法可以在我的 bash 脚本中捕获 C 程序的这个返回值?
我相信 awk、sed 等不同的命令是用 C 编写的。它们如何使用 $?将他们的退出代码存储在其中?如何让我的 C 程序将其退出代码存储在 $??
我希望我的问题很清楚。
【问题讨论】:
我有一个 bash 脚本,我在其中使用 $? 检查上次运行命令的退出代码?变量,但现在我正在执行一个 C 程序(来自该脚本),如果程序成功执行,则返回 0。有什么方法可以在我的 bash 脚本中捕获 C 程序的这个返回值?
我相信 awk、sed 等不同的命令是用 C 编写的。它们如何使用 $?将他们的退出代码存储在其中?如何让我的 C 程序将其退出代码存储在 $??
我希望我的问题很清楚。
【问题讨论】:
bash 自动捕获$? 中的退出代码。或者,如果您只关心零/非零,您可以使用if 中的命令。
【讨论】:
没有必要做任何事情 - 如果你的 C 程序返回 0,那将存储在执行它的 shell 的 $? 变量中。
【讨论】:
C程序的返回码是int main()函数的返回值或exit()函数的参数。然后系统通过wait() 系统调用使其对父进程可用。当父进程为bash 时,该值将通过$? 变量提供。
【讨论】:
fork() 创建了一个新进程,并且它的手册页提到了这一点。我错了吗?