Что вы подразумеваете под «запустить процесс в своей собственной группе процессов»?Оболочка запускает процессы в своих собственных группах процессов, вот как она выполняет управление заданиями (имея группу процессов для процессов на переднем плане и несколько групп процессов для каждого конвейера, запущенного в фоновом режиме).
Чтобы увидеть этооболочка запускает новую группу процессов для каждого конвейера, вы можете сделать это:
ps fax -o pid,pgid,cmd | less
, которая покажет что-то вроде:
11816 11816 | \_ /bin/bash
4759 4759 | \_ ps fax -o pid,pgid,cmd
4760 4759 | \_ less
Обратите внимание, что оболочка создала новую группу процессовдля конвейера, и каждый процесс в конвейере разделяет группу процессов.
Редактировать:
Я думаю, я знаю, к чему вы клоните.Вы звоните system
из Perl.По-видимому, sh -c
не создает новые группы процессов, поскольку это оболочка без управления заданиями.
Я бы сделал fork
, затем дочерний:
setpgrp;
system("ps fax -o pid,pgid,cmd");
и wait
на родителя.