Answers:
您可以使用GDB和进程ID附加到进程,然后发出call
带有exit(0)
参数的命令。
call
允许您在正在运行的程序中调用函数。调用exit(0)
退出,返回码为0。
gdb -p <process name>
....
.... Gdb output clipped
(gdb) call exit(0)
Program exited normally.
作为单行工具:
gdb --batch --eval-command 'call exit(0)' --pid <process id>
_exit
使用0
作为参数来调用系统调用。这将适用于任何不仅仅循环和燃烧CPU周期的进程。如果该过程恰好没有陷入无限循环中,则可以在可执行文件中找到必要的指令并将指令指针指向该处时,仍然可以使用相同的方法。
否。当shell捕获时,SIGCHLD
它无条件地将返回值适当地设置为非零值,因此这将需要修改脚本或shell。
这种单线为我工作:
/bin/bash -c '/usr/bin/killall -q process_name; exit 0'
$ cat; echo $?
Terminated
143
。
No symbol table is loaded. Use the "file" command
。尽管这极不可能。