Я написал приложение, которое использует fork и execv для запуска другого процесса. Я создал канал для уведомления о состоянии, и из основной записи запущенного процесса я записал несколько байтов, чтобы уведомить, что он запущен правильно. В противном случае read возвращает 0, так как канал записи был закрыт в разветвленном процессе.
Единственная проблема - когда процесс не запускается (отсутствует библиотека), я получаю сообщение об этом в stderr. Сообщение написано в оболочку, что не так. Я бы предпочел сделать это спокойно. Однако, если я делаю close (2) перед execv, у меня нет сообщения о том, что я хочу. Тем не менее, я бы хотел оставить fd 2 открытым для stderr.