Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* pretende-se que o filho termine depois do pai usando sinais */
- // processos e sinais (signal, fork)
- // Apple Xcode
- // paulogp
- #include <stdio.h>
- #include <time.h>
- #include <signal.h>
- #include <unistd.h>
- int sigflag = 0;
- void sig_usr (int signo)
- {
- sigflag = 1;
- }
- int main (int argc, const char * argv[])
- {
- int pid;
- sigset_t newmask, zeromask;
- signal(SIGUSR1, sig_usr); // verificar valor de retorno
- sigemptyset(&zeromask);
- sigemptyset(&newmask);
- sigaddset(&newmask, SIGUSR1);
- sigprocmask(SIG_BLOCK, &newmask, NULL);
- pid = fork();
- if (pid == 0)
- {
- while (sigflag == 0)
- {
- sigsuspend(&zeromask); // wait for parent
- }
- printf(">%d\n", getpid());
- }
- else
- {
- printf(":%d\n", getpid());
- kill(pid, SIGUSR1);
- }
- printf("\ndone\n");
- return 0;
- }
- // nota: se o sinal (signal, sigemptyset, ... ) for gerado
- // entre o while e o sigsuspend(), apenas o valor do pai e
- // retornado
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement