You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

父进程向子进程发送暂停/恢复信号的相关技术咨询

父进程暂停/恢复子进程的信号说明

当然存在这样的信号!在类Unix系统中,父进程完全可以通过标准信号来控制子进程的暂停与恢复:

  • 暂停子进程的信号:SIGSTOP
    这个信号是强制暂停进程的“硬暂停”信号,它不能被捕获、忽略或者阻塞,能确保子进程一定会进入暂停状态,可靠性拉满。

  • 恢复子进程的信号:SIGCONT
    不管子进程是被SIGSTOP强制暂停,还是被SIGTSTP(比如终端按Ctrl+Z触发的可捕获暂停信号)暂停,发送SIGCONT信号都能让它从暂停的位置继续运行。

实际使用示例

命令行场景

假设你有一个PID为1234的子进程在后台运行,你可以用kill命令手动发送信号:

# 暂停子进程
kill -STOP 1234

# 恢复子进程运行
kill -CONT 1234

C代码场景

父进程通过kill()函数发送信号控制子进程:

#include <signal.h>
#include <unistd.h>
#include <stdio.h>

int main() {
    pid_t child_pid = fork();
    if (child_pid == 0) {
        // 子进程持续输出运行状态
        while(1) {
            printf("子进程正在运行...\n");
            sleep(1);
        }
    } else {
        // 父进程先让子进程跑3秒
        sleep(3);
        // 发送暂停信号
        kill(child_pid, SIGSTOP);
        printf("已暂停子进程\n");
        
        // 等待5秒后恢复
        sleep(5);
        kill(child_pid, SIGCONT);
        printf("已恢复子进程\n");
        
        // 最后终止子进程
        sleep(3);
        kill(child_pid, SIGTERM);
    }
    return 0;
}

补充说明:SIGTSTP也是一种暂停信号,但它允许进程捕获或忽略,所以如果需要强制暂停子进程,SIGSTOP是更稳妥的选择。

内容的提问来源于stack exchange,提问作者user11210665

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:25:07