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.