Rae*_*dow 3 c linux shell signals
我有一个任务是用 C 语言为 shell 编写代码。其中一个 shell 命令是“quit kill”,我必须在关闭主进程之前向所有子进程发送 TERM 信号。\n如果子进程在 5 秒内没有关闭,我必须发送 KILL 信号来终止它。\n现在我已经编写了代码,我想测试它,但我不知道如何测试,所以你们知道忽略 TERM 信号的进程吗?\n这是我为终止一个子进程而编写的代码:
\n\n kill(pid,SIGTERM);\n t = time(NULL);\n while(1){\n int state = waitpid(pid,&status,WNOHANG);\n if(state<0){\n perror("Error ");\n exit(0);\n }\n if(state == 0){\n if((time(NULL)-t)>5){\n printf("(5 sec passed) Sending SIGKILL\xe2\x80\xa6 Done.\\n");\n kill(pid,SIGKILL);\n break;\n }\n }\n else{\n printf("Done.\\n");\n break;\n }\n }\n
Run Code Online (Sandbox Code Playgroud)\n
此 bash 脚本忽略 TERM:
#!/bin/bash
trap '' TERM
cat
Run Code Online (Sandbox Code Playgroud)
将其放入文件并启动。然后尝试用 TERM 杀死它。
归档时间: |
|
查看次数: |
558 次 |
最近记录: |