Fig 1: Fluxo de trabalho básico ()
Neste artigo, vou mostrar a você como usar o System Call para criar processos infantis em C. Então vamos começar.
Fork () Sintaxe e Valor de Retorno:
A sintaxe da função do sistema Fork () é a seguinte:
pid_t fork (void);A função do sistema Fork () não aceita nenhum argumento. Ele retorna um número inteiro do tipo pid_t.
No sucesso, Fork () retorna o PID do processo infantil, que é maior que 0. Dentro do processo infantil, o valor de retorno é 0. Se o Fork () falhar, ele retornará -1.
Exemplo simples do garfo ():
Um exemplo simples de garfo () é dado abaixo:
#incluirAqui, usei o Fork () para criar um processo filho a partir do processo principal/pai. Em seguida, imprimi o PID (ID do processo) e o PPID (ID do processo pai) do processo infantil e pai. No processo dos pais, espera (nulo) é usado para esperar o processo infantil terminar. No processo infantil, o exit () é usado para terminar o processo infantil. Como você pode ver, o PID do processo pai é o PPID do processo infantil. Então, o processo infantil 24738 pertence ao processo pai 24731.
Você também pode usar funções para tornar seu programa mais modular. Aqui eu usei processTask () e parentTask () funções para os processos de criança e pai, respectivamente. É assim que o garfo () é realmente usado.
#incluirA saída do programa acima:
Executando vários processos infantis usando fork () e loop:
Você também pode usar o loop para criar tantos processos infantis quanto precisar. No exemplo abaixo, criei 5 processos infantis usando o loop. Eu também imprimi o PID e o PPID dos processos filhos.
#incluirComo você pode ver, o ID do processo pai é o mesmo em todos os processos infantis. Então, todos eles pertencem ao mesmo pai. Eles também executam de maneira linear. Um após o outro. Controlar processos infantis é uma tarefa sofisticada. Se você aprender mais sobre a programação do sistema Linux e como ele funciona, poderá controlar o fluxo desses processos de qualquer maneira você quiser.
Exemplo da vida real:
Diferentes cálculos matemáticos complexos, como MD5, SHA256, etc. a geração de hash requer muito poder de processamento. Em vez de calcular coisas assim no mesmo processo do programa principal, você pode simplesmente calcular o hash em um processo infantil e devolver o hash ao processo principal.
No exemplo seguinte, eu gerei um código de pino de 4 dígitos em um processo infantil e o enviei para o processo pai, o programa principal. Então, eu imprimi o código do PIN a partir daí.
#incluirComo você pode ver, cada vez que executo o programa, recebo um código de pino de 4 dígitos diferente.
Então, é basicamente assim que você usa o System Call in Linux no Linux. Obrigado por ler este artigo.