使用sigstop和sigcont信号可强制挂起与恢复进程:kill -stop 暂停,kill -cont 恢复;stat列显示t表示已暂停,r/s表示运行或睡眠。

向指定进程发送挂起(暂停)与继续运行信号,核心是使用 SIGSTOP 和 SIGCONT 两个不可忽略、无法捕获的系统信号。它们不依赖进程是否响应,能直接控制执行状态。
用 kill 命令挂起进程(暂停)
执行以下命令即可立即暂停目标进程(进程仍驻留在内存,未终止):
-
kill -19 <pid></pid>或等价写法kill -STOP <pid></pid> - 例如:
kill -STOP 1234—— 暂停 PID 为 1234 的进程 - 效果等同于在前台运行该进程时按
Ctrl+Z,但Ctrl+Z实际发的是 SIGTSTP(可被捕获),而SIGSTOP是强制暂停,更可靠
用 kill 命令恢复被挂起的进程
对已处于暂停状态的进程,发送 SIGCONT 即可让它从断点继续运行:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
kill -18 <pid></pid>或kill -CONT <pid></pid> - 例如:
kill -CONT 1234—— 恢复 PID 1234 的执行 - 注意:SIGCONT 只对当前处于 STOPPED 状态的进程有效;对正在运行或已退出的进程无影响
编程中用 kill() 函数控制进程状态
在 C 程序里,可通过系统调用向其他进程发送这两个信号:
- 函数原型:
int kill(pid_t pid, int sig); - 挂起:
kill(1234, SIGSTOP);或kill(1234, 19); - 恢复:
kill(1234, SIGCONT);或kill(1234, 18); - 权限要求:调用者需具备向目标进程发送信号的权限(通常是同一用户或 root)
验证进程当前状态的方法
发送信号后,可用以下方式确认进程是否真的被挂起或已恢复:
- 运行
ps -o pid,stat,comm -p <pid></pid>,观察STAT列:
T 表示已暂停(stopped),
R 或 S 表示正在运行或可中断睡眠 - 也可用
top或htop查看,暂停进程的 CPU 占用会降为 0,且状态栏显示T










