多实例运行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
相关产品推荐
相关产品推荐

