是否有不受 SIGTERM 影响的进程?

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

Vel*_*kan 5

此 bash 脚本忽略 TERM:

#!/bin/bash
trap '' TERM
cat
Run Code Online (Sandbox Code Playgroud)

将其放入文件并启动。然后尝试用 TERM 杀死它。