How to terminate a child process which is running another program by doing exec

前端 未结 3 851
予麋鹿
予麋鹿 2021-02-06 15:56

I\'m doing fork in my main program,and doing exec in the child process which will run another program. Now i want to terminate the child(i.e., the program invoked by exec) and r

3条回答
  •  臣服心动
    2021-02-06 16:12

    You need to do the following:

    1. Do a kill(pid, SIGTERM) first - this gives the child process an opportunity to terminate gracefully
    2. Wait a period of time (use sleep). The period of time depends on the time the child process takes to close down gracefully.
    3. Use waitpid(pid, &status, WNOHANG) checking the return value. If the process has not aborted do step 4
    4. Do a kill(pid, SIGKILL) then harvest the zombie by doing waitpid(pid, &status, 0).

    These steps ensure that you give the child process to have a signal handler to close down and also ensures that you have no zombie processes.

提交回复
热议问题