0

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

现在谈到问题,大多数时候,用户希望ctrlc在完成使用程序或不想继续时使用来杀死进程。

bash 进程被ctrlc正确终止,但是,.exe它通常在没有被杀死的情况下运行。所以用户需要使用kill -9 xxx杀死进程。如果他们忘记杀死,他们的 CPU 可能会被完全占用。

我该如何着手解决这个问题?我应该为 exe 文件的代码或 bash 脚本做点什么吗?

谢谢

4

3 回答 3

2
#!/bin/bash

./yourbinary &
pid=$!

trap "kill -9 $pid" SIGINT

wait
于 2013-09-12T09:36:49.520 回答
0

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

exe&

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

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

CONFIG += console

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

于 2013-09-12T14:49:06.953 回答
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);
        }
于 2013-09-12T10:11:39.870 回答