The following process does not continue after running kill -SIGCONT pid
from another terminal.
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("paused\n");
pause();
printf("continue\n");
return 0;
}
I expect the program to continue after sending the signal and printing "continue". How come this doesn't work as expected?
pause()
is documented to
cause the calling process (or thread) to sleep until a signal is delivered that either terminates the process or causes the invocation of a signal-catching function.
But SIGCONT only continues a process previously stopped by SIGSTOP or SIGTSTP.
So, you might want to try:
kill(getpid(), SIGSTOP);
Instead of your pause()
Also, you might want to look at sigsuspend()
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With