Como faço para que o tcsetpgrp () funcione em
Estou tentando dar um processo filho (viafork()
) acesso em primeiro plano ao termina
Depois que eufork()
, Eu executo o seguinte código no processo filho:
setpgid(0, 0);
E
setpgid(child, child);
No processo pai.
Isto fornece à criança seu próprio grupo de processos. A chamada parasetpgid()
funciona corretament
gora, quero dar à criança acesso ao termina
Adicionei o seguinte à criança após osetpgid()
ligar
if (!tcsetpgrp(STDIN_FILENO, getpid())) {
perror("tcsetpgrp failed");
}
Depois disso, existe umexecv()
comando para gerar/usr/bin/nano
.
No entanto, em vez de ternano
, nada acontece e o terminal parece estar esperando a entrada do usuári
Além disso, nenhum código parece ser executado após otcsetpgrp()
ligar
Li em algum lugar que preciso enviar umSIGCONT
sinaliza ao processo filho para que ele funcione. Se o processo for interrompido, como posso fazer isso? Os pais precisam enviar o sinal?
Como faço para enviar oSIGCONT
sinaliza se essa é a solução?
raise(SIGCONT);
Além disso, não tenho certeza se isso ajuda, mas o código funciona bem e geranano
se eu executar o meu programa com:
exec ./program
Ao invés de
./program
Alguma ideia? Muito obrigado