0 c bash shell operating-system
我正在阅读一本有关操作系统的开源教科书,这是第一个代码示例(文件名是“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;
}
Run Code Online (Sandbox Code Playgroud)
当我在终端中运行“./cpu 'A'”时,一切正常,我可以使用 Ctrl + C 终止它。但是,当我使用
./cpu A & ./cpu B & ./cpu C & ./cpu D &
Run Code Online (Sandbox Code Playgroud)
使程序的多个实例运行,并尝试使用 Ctrl + C,代码继续无限期地运行。我在网上看到 Ctrl + Z 可以工作,但没有帮助。有没有办法在不关闭终端的情况下结束4个程序的运行?我已经看过这个,但我不相信它能帮助解决我的问题。
您已经在后台运行了 4 个进程,因此 shell 仍在等待您的输入。然而,这些进程并不关注中断信号。
你可以用工作号码杀死他们:
$ ./cpu A & ./cpu B & ./cpu C & ./cpu D &
[1] 9735
[2] 9736
[3] 9737
[4] 9738
$ kill %1 %3
[3] - Terminated ./cpu A & ./cpu B & ./cpu C & ./cpu D &
[1] Terminated ./cpu A & ./cpu B & ./cpu C & ./cpu D &
$ kill %2 %4
[4] + Terminated ./cpu A & ./cpu B & ./cpu C & ./cpu D &
[2] - Terminated ./cpu A & ./cpu B & ./cpu C & ./cpu D &
$
Run Code Online (Sandbox Code Playgroud)
当然,我已经抑制了 4 个程序的输出。
由于您已获得进程的 PID,因此您还可以使用带有kill:的 PIDkill 9735 9736 9737 9738来杀死四个后台进程。该kill命令默认发送 SIGTERM 信号。
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |