Quando usar setpgrp
vi
(e outros programas tty) funcionar completamente diferente do que se setpgrp
não for usado. Exemplo:
perl -MIPC::Open3 -e '$pid= open3("<&STDIN", ">&STDOUT", ">&STDERR", qw(perl -e),q(exec qw(bash -c),qq(vi foo))); wait'
Isso funciona muito bem e chama vi foo
. Mas adicione setpgrp
:
perl -MIPC::Open3 -e '$pid= open3("<&STDIN", ">&STDOUT", ">&STDERR", qw(perl -e),q(setpgrp;exec qw(bash -c),qq(vi foo))); wait'
e depois não funciona tão bem.
Testado no GNU / Linux (Mint), no FreeBSD, no OpenBSD, no Solaris, no HPUX, no AIX, no Dragonfly. Todos dão um comportamento semelhante.
Por quê? Posso de alguma forma criar um grupo de processos e ainda gerar ferramentas como vi
?
Plano de fundo
O acima é parte de uma possível extensão do GNU Parallel que permitirá eliminar os grupos de processos em vez dos processos, e é, portanto, um pequeno canto do programa completo. Uma resposta para apenas executar vi foo
não é, portanto, uma resposta útil.