2
回答
在linux 平台上如果一个进程已经退出,如何根据进程id 查询该进程的退出码呢?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
在linux 平台上如果一个进程已经退出,如何根据进程id 查询该进程的退出码呢?
举报
共有2个答案 最后回答: 2年前

退出码非永久保留,如果进程已经退出,你又没有使用某种方式承接退出码的话(如环境变量,输出到文件等存储方式),那么程序一旦退出,相关的信息会被释放掉,你无法获取退出码。

因此你如果想获取退出码,那么就需要开一个进程监视运行中的进程。

如bash脚本中

#!/bin/bash

(ping www.baidu.com; echo $?) &
sleep 10
pkill ping

在shell中,$?这个特殊的变量存储上一条命令的退出码。小括号的作用是括号内整体的命令在单独的子进程中执行,&将这个bash子进程放后台。

所以等于开了一个bash子进程随时监视ping进程,当ping进程被kill掉的时候,后面的$?变量就是ping命令的退出码。

shell中执行 echo $? 可以输出上一条命令的结束代码,比如启动PHP内置的HTTP服务器,端口绑定到0:
php -S 127.0.0.1:0 返回Invalid address: 127.0.0.1:0
echo $? 返回1
顶部