我有一个从C ++代码编译的exe文件。我使用bash来设置Linux环境并调用这个.exe
程序。
现在出现问题,大多数情况下,用户想要使用 ctrl c 来终止使用该程序时的进程或者当他们不在时我想继续。
bash进程正确地由 ctrl c 终止,但.exe
通常在没有被杀死的情况下运行。因此用户需要使用kill -9 xxx
来终止进程。如果他们忘了杀人,他们的CPU可能会被完全占用。
我该如何解决这个问题?我可以为exe文件的代码或bash脚本做些什么吗?
由于
答案 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终止应用程序。