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

多实例运行C程序时Ctrl+C无法终止的解决办法咨询

问题描述

我正在学习一本开源操作系统教材,这是其中第一个代码示例(文件名为cpu.c):

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <stdio.h>

int main(int argc, char *argv[])
 {
    if (argc != 2) {
        fprintf(stderr, "usage: cpu <string>\n");
        exit(1);
    }

    char *str = argv[1];

    while (1) {
        sleep(1);
        printf("%s\n", str);
    }

    return 0;
}

单独运行./cpu 'A'时一切正常,能用Ctrl+C终止程序。但用命令:

./cpu A & ./cpu B & ./cpu C & ./cpu D &

启动多个实例后,按Ctrl+C无法终止这些程序,Ctrl+Z也没用。想找不用关闭终端就能终止这4个程序的方法。

解决方法

以下是几种无需关闭终端即可终止所有cpu进程的实用方法:

  • 方法1:使用pkill快速终止
    直接通过进程名匹配并终止所有实例:

    pkill cpu
    
  • 方法2:使用killall命令
    和pkill功能类似,直接针对进程名操作:

    killall cpu
    
  • 方法3:手动定位PID后终止
    如果担心误杀其他同名进程,先列出所有cpu进程的ID:

    pgrep cpu
    

    再用kill命令一次性终止这些PID,比如查到PID为1234、5678、9012、3456,执行:

    kill 1234 5678 9012 3456
    

    也可以用管道简化操作:

    kill $(pgrep cpu)
    
  • 方法4:通过后台任务ID操作
    先执行jobs命令查看后台任务的编号:

    jobs
    

    输出类似:

    [1]  Running                 ./cpu A &
    [2]  Running                 ./cpu B &
    [3]  Running                 ./cpu C &
    [4]  Running                 ./cpu D &
    

    然后用kill命令一次性终止所有后台任务:

    kill %1 %2 %3 %4
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:17:40