Questão FC266998
Na maioria dos sistemas, os processos são executados de forma concorrente e podem ser gerados e destruídos dinamicamente. Com uma chamada de sistema do tipo fork podemos criar um n
Gerência de Processos
IDECAN · 2022
Na maioria dos sistemas, os processos são executados de forma concorrente e podem ser gerados e destruídos dinamicamente. Com uma chamada de sistema do tipo fork podemos criar um novo processo em UNIX, ou CreateProcess() se for utilizado o Windows, por exemplo. Assim, indique a opção dentro da chamada de sistema de gerenciamento de processos que espera que um processo filho seja concluído.
- pid = wait(pid, &statloc).
- pid = wait_pid(&statloc, options).
- pid = wait(pid, &statloc, options).
- pid = forkpid(pid, &statloc, options).
- pid = waitpid(pid, &statloc, options).
Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
waitpid() é a chamada usada para o pai aguardar a conclusão de um processo filho específico. A forma típica é pid = waitpid(pid, &statloc, options), onde pid identifica o filho, statloc é um ponteiro para receber o status de término e options permite comportamentos especiais.
Passando o identificador do filho, a função bloqueia o processo pai até que aquele filho termine (ou mude de estado). Com opções como WNOHANG você evita bloqueio; com WUNTRACED consegue detectar filhos parados por sinal.
O retorno é o PID do filho cujo estado foi obtido; retorna 0 se WNOHANG estiver ativo e nenhum filho mudou de estado, ou -1 em caso de erro. Assim, waitpid() permite sincronizar o pai com um filho específico e coletar seu status, evitando processos zumbis.
Conteúdo do catálogo FC Concursos · Atualizado em