gpt4 book ai didi

linux - 在 Linux 中等待任意进程并获取其退出代码

转载 作者:IT王子 更新时间:2023-10-29 00:47:03 25 4
gpt4 key购买 nike

如果我不是进程的启动者,有没有办法等到进程完成?

例如如果我运行“ps -ef”并选择任何 PID(假设我有权访问进程信息)- 有没有一种方法可以等到 PID 完成并获取其退出代码?

最佳答案

您可以使用 strace,它跟踪信号和系统调用。以下命令等待程序完成,然后打印其退出代码:

$ strace -e none -e exit_group -p $PID       # process calls exit(1)
Process 23541 attached - interrupt to quit
exit_group(1) = ?
Process 23541 detached

$ strace -e none -e exit_group -p $PID # ^C at the keyboard
Process 22979 attached - interrupt to quit
--- SIGINT (Interrupt) @ 0 (0) ---
Process 22979 detached

$ strace -e none -e exit_group -p $PID # kill -9 $PID
Process 22983 attached - interrupt to quit
+++ killed by SIGKILL +++

来自 ^Zfgkill -USR1 的信号也会被打印出来。无论哪种方式,如果您想在 shell 脚本中使用退出代码,都需要使用 sed

如果 shell 代码太多,您可以使用 program I hacked together in C一会儿回来。它使用 ptrace() 来捕获 pids 的信号和退出代码。 (它有粗糙的边缘,可能无法在所有情况下使用。)

希望对您有所帮助!

关于linux - 在 Linux 中等待任意进程并获取其退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9893124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com