Reputation: 1617
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?
Upvotes: 6
Views: 15699
Reputation: 22125
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()
.
Upvotes: 6