Обычно родительский процесс ожидает до концов дочернего процесса путем вызова waitpid
. Родительский процесс получает PID процесса от fork
.
Это означает, что ребенок никогда не предупреждает о родительском процессе всегда, что он вышел или что произошло. Это сделано системой а не дочерним процессом.
Если Вы говорите о выводе программы, родитель обычно никогда не получает вывод дочернего процесса, если это не обеспечило fds. Это также означает, что дочерний процесс печатает вывод а не родительский процесс. Родительский процесс просто получает информацию о состоянии процесса (для получения дополнительной информации посмотрите макросы в waitpid
страница справочника)
Поместите команды, которые вы хотите запустить от имени другого пользователя, в отдельный файл,
user2commands
, а затем выполните
sudo su - user < user2commands
Если вы не хотите иметь отдельный файл, подумайте:
sudo su - user << EOF commands to be run as the other user ︙ EOF
Судя по моему личному опыту, это никогда не срабатывало. Поиск обходного пути создает больше работы, и он может не сработать, если у вас нет прав root'а.