История изменений
Исправление firkax, (текущая версия) :
Запускаешь программу своим лаунчером (не на шелле), запоминаешь pid, выданный fork()-ом, и он будет действителен как минимум до тех пор, пока лаунчер сам не завершится, либо не сделает wait() / waitpid() - поскольку его пишешь ты - то ты это и контролируешь. В лаунчере делаешь логику ожидания превращения процесса в зомби (но без wait()), а когда он превратился - сначала удаляешь сохранённый его pid оттуда где ты его сохранил, а затем завершаешь лаунчер.
А, вот, ждать без wait() можно через waitid() с флагом WNOWAIT - тогда конец работы процесса тебе сообщат, но остатки процесса всё так же будут занимать pid.
Исходная версия firkax, :
Запускаешь программу своим лаунчером (не на шелле), запоминаешь pid, выданный fork()-ом, и он будет действителен как минимум до тех пор, пока лаунчер сам не завершится, либо не сделает wait() / waitpid() - поскольку его пишешь ты - то ты это и контролируешь. В лаунчере делаешь логику ожидания превращения процесса в зомби (но без wait()), а когда он превратился - сначала удаляешь сохранённый его pid оттуда где ты его сохранил, а затем завершаешь лаунчер.