Is kill function synchronous?

前端 未结 4 1317

Is the kill function in Linux synchronous? Say, I programatically call the kill function to terminate a process, will it return only when the inten

相关标签:
4条回答
  • 2021-01-07 19:36

    kill cannot be synchronous as it only sends a signal. The target process might ignore incoming signals (cf. SIG_IGN) so there's no guarantee regarding kill's effect.

    It shouldn't be difficult to make an experiment verifying this hypothesis. Start process A and make it handle SIGTERM with a 10 second sleep before dying. Then start process B, which delivers a SIGTERM to A and exits immediately.

    0 讨论(0)
  • 2021-01-07 19:46

    The kill system call does not wait for the other process to do anything. The signal is posted to the target process and the system call returns. The target process notices the signal when it is scheduled to run.

    0 讨论(0)
  • 2021-01-07 19:48

    No, since it doesn't kill anything, it only sends a signal to the process.

    By default this signal can even be blocked or ignored.

    You can't block kill -9 which represents sending SIGKILL

    To wait for the process to die:

    while kill -0 PID_OF_THE_PROCESS 2>/dev/null; do sleep 1; done
    
    0 讨论(0)
  • 2021-01-07 19:48
    1. No. man 2 kill
    2. man wait

    See also man 7 signal for more details about Unix signals.

    0 讨论(0)
提交回复
热议问题