Syscall waitpid em c

Syscall waitpid em c

O monitores de chamadas do sistema waitpid () Um filho do processo de chamadas para mudanças de estado e recupera informações sobre a criança cujo comportamento mudou. A criança foi interrompida por um sinal ou retomada por um sinal considerado como uma mudança de estado. Esperar uma criança terminada permite que o sistema liberte os recursos associados à criança; Se nenhuma espera for realizada, a criança terminada permanecerá em um “zumbi" doença.

O Função do sistema waitpid () faz uma pausa no processo atual até que o argumento do PID especifique uma criança que mudou. O processo de chamada é pausado até que o processo de uma criança seja concluído ou seja encerrado. Waitpid () interrompe o processo de chamada até que o sistema receba informações sobre o status da criança. Waitpid () retorna rapidamente se o sistema já tiver informações de status em uma criança adequada quando é chamado. Se o processo do chamador receber um sinal com a ação de executar um manipulador de sinal ou encerrar o processo, waitpid () Está terminado. O função waitpid () Pausará a execução do encadeamento de chamadas até receber informações e atualizações para um de seus processos infantis encerrados ou um sinal que executará um procedimento de captura de sinal ou encerrará o processo.

Exemplo 1

Vamos elaborar em nosso primeiro exemplo no terminal do Ubuntu 20.04 Sistema operacional. Crie um arquivo com o comando nano no console, como revelado abaixo. Cabe a você selecionar um nome de arquivo.

$ nano Espere.c

Você pode verificar se o arquivo apareceu em Editor de Nano GNU. Basta colocar o código mostrado na imagem anexada.

Neste exemplo, usamos o loop para incrementar o processo. Chamada do sistema Fork () foi usado. O Chamada do sistema Fork () é usado para iniciar um novo processo, conhecido como processo infantil, que é paralelo ao que fez o ligue para o garfo () para o processo pai. Depois Chamada do sistema Fork () Cria um novo processo infantil, todos os processos executarão a próxima instrução. Não aceita entrada e retorna um valor inteiro. Depois disso, a função do sono foi usada.

A função Sleep () suspende a operação do segmento de chamada até que a faixa de segundos em tempo real fornecida pelos segundos do parâmetro seja passada, ou um sinal é dado ao encadeamento de chamada com a ação de invocar uma função de captura de sinal ou encerrar o processo. Nós adicionamos "1" como um argumento. Esposa verifica o status de rescisão infantil devolvido pela espera e Métodos waitpid () Para ver se o processo infantil foi concluído com sucesso.

Na principal função deste programa, o espera () chamada do sistema tem sido chamado. Depois de entender este código, salve e saia do arquivo e volte ao terminal. Escreva as instruções abaixo recorrentes para a execução do código. Nós usamos o Compilador GCC no Ubuntu 20.04 sistema operacional.

$ GCC Espere.c
$ ./a.fora

A saída pode ser vista na imagem em anexo.

Exemplo 2

Vamos elaborar em nosso segundo exemplo no terminal do Ubuntu 20.04 Sistema operacional. Criar um arquivo com o comando nano no console, conforme apresentado abaixo. Depende totalmente de você selecionar um nome de arquivo.

$ nano waitpid.c

Você pode verificar se o arquivo apareceu em Editor de Nano GNU. Basta colocar o código mostrado na imagem anexada.

No código acima do display, novamente, Chamada do sistema Fork () foi usado. O objetivo do Chamada do sistema Fork () é iniciar um novo processo, conhecido como um processo infantil, que corre em paralelo com o que fez o ligue para o garfo () para o processo pai. Depois Chamada do sistema Fork () Cria um novo processo infantil, todos os processos executarão a próxima instrução. Não aceita entrada e retorna um valor inteiro. Exit_failure significa a implementação ineficaz de um programa. O função pause () vai esperar pelos sinais.

Se uma criança parou, mas não foi rastreada usando ptrace () Chamada do sistema, Wuntrate retornará. Embora este parâmetro não seja selecionado, o status de crianças rastreadas que pararam é fornecido. WCONTinued Retorne se uma criança interrompida for reiniciada pela transmissão SigCont. Wexitstatus (status) fornece o status de saída da criança. Se Esposa retorna verdadeiro, essa expressão só deve ser usada. A frequência do sinal que levou o processo infantil ao fim é devolvido por Wtermsig (status). Se Wifsignaled deu o "verdadeiro", essa expressão só deve ser usada.

O número do sinal que levou a criança a parar é devolvido por Wstopsig (status). Se Wifstopped retorna verdadeiro, essa expressão só deve ser usada. Wifsignaled (status) retorna verdadeiro se um sinal encerrou o processo da criança. Depois de entender este código, salve e saia do arquivo e volte ao terminal. Escreva as instruções abaixo recorrentes para a execução do código. Usamos o compilador GCC no Ubuntu 20.04 Sistema operacional.

$ gcc waitpid.c
$ ./a.fora

A saída pode ser vista na imagem em anexo.

Conclusão

Este guia foi sobre o uso do Chamada do sistema waitpid () Na programação C. Afirmamos dois exemplos. Um deles é mais simples e fácil. Depois de entender, você pode se mover facilmente para o complexo. Executar ambos os exemplos em seu sistema para facilitar a experiência do uso do uso do Chamada do sistema waitpid () Na programação C.