如何使用“ctrl c”来杀死所有进程?

时间:2013-09-12 09:28:50

标签: linux bash linux-kernel exe sigint

我有一个从C ++代码编译的exe文件。我使用bash来设置Linux环境并调用这个.exe程序。

现在出现问题,大多数情况下,用户想要使用 ctrl c 来终止使用该程序时的进程或者当他们不在时我想继续。

bash进程正确地由 ctrl c 终止,但.exe通常在没有被杀死的情况下运行。因此用户需要使用kill -9 xxx来终止进程。如果他们忘了杀人,他们的CPU可能会被完全占用。

我该如何解决这个问题?我可以为exe文件的代码或bash脚本做些什么吗?

由于

3 个答案:

答案 0 :(得分:2)

#!/bin/bash

./yourbinary &
pid=$!

trap "kill -9 $pid" SIGINT

wait

答案 1 :(得分:0)

这是我早期编写的旧代码。我用它来杀死ffmpeg,我也粘贴了代码。我没有使用ctr + c,我正在使用进程pid来杀死它。我认为这一定是好方法。

        else if (strcmp(client_message,"2-off") == 0) {
            printf("start audio streeaming will be turned of\n");
            fp = popen("pidof ffmpeg", "r");
            fgets(line, 100, fp);
            pid = atoi(line);
            printf("pid = %d\n",pid);
            sprintf(command,"kill %d",pid);
            status = system(command);
            pclose(fp);
        }

答案 2 :(得分:0)

你是否用bash脚本分离你的程序?你这样称呼它:

exe&

你可以删除“&”并且脚本将在执行下一个命令之前等待程序结束。

如果问题不存在,请尝试将程序附加到控制台。例如,在Qt项目字符串中:

CONFIG += console
.pro文件中的

将应用程序附加到控制台,脚本将等待应用程序结束并使用Ctrl + C终止应用程序。