Como o processo pode se tornar um membro de um grupo de processos?

0

Como no título: como pode se tornar um membro de um PGRP?

Minha tentativa: O processo precisa ser filho de um líder do PGRP ou precisamos usar uma chamada de sistema setpgid () .

Além disso, outras duas perguntas.

1) Como o processo pode se tornar um líder de um grupo? Só posso pensar em criar um novo processo, que se tornará automaticamente um líder

2) O grupo pode ter muitos líderes? Eu acho que é impossível, mas não consigo encontrar nenhuma informação sobre isso

As minhas respostas estão corretas?

    
por SantaXL 27.03.2017 / 16:51

1 resposta

1

I can only think about creating a new process, which will automatically become a leader

Falso.

#include <stdio.h>
#include <unistd.h>
int main(void) {
    pid_t pid;
    pid = fork();
    printf("%d member of %d\n", getpid(), getpgrp());
    return 0;
}

O novo processo compartilha o grupo do pai:

$ make leadership
cc -g    leadership.c   -o leadership
$ ./leadership
65617 member of 65617
65618 member of 65617
$ 

Somente com setpgid(2) ou setsid(2) ou chamadas de sistema semelhantes o grupo ou a liderança mudará.

2) Can group have many leaders?

Falso. Citando Stevens, "Programação Avançada no Ambiente UNIX" (2ª ed.), Capítulo 9, seção 4 (p. 243):

"Each process group can have a process group leader. The leader is identified by having its process group ID equal to its process ID."

Líder singular e um caso muito específico para identificar esse líder.

    
por 27.03.2017 / 17:40