Я не уверен, что четко понимаю, чего вы хотите достичь, но на всякий случай ... Я думаю, что поток / процесс, который запускается неопределенно, является ошибкой, за исключением того, что что-то может изменить его поведение в течение "жизни". (не только ждать действия человека)
Тем не менее, я думаю, что вы должны рассмотреть возможность использования потоков вместо вилок. Это гарантирует, что все потоки умрут, если родительский процесс закончится или будет уничтожен, иначе ваши дочерние процессы могут оставаться запущенными, пока кто-то не уничтожит их. (человеческие действия или перезагрузка)
независимо от вашего выбора, вы можете легко найти образец кода для этого с помощью небольшого поиска Google. Относительно того, как прервать дочерний поток / процесс из другого терминала, нет простого способа, поскольку он будет запускаться в фоновом режиме.
трудный путь: заставить дочерний элемент прослушивать сокет и заставить его выходить при получении сообщения.
более простой способ: заставить дочерний элемент создать файл при запуске и контролировать, что файлвсе еще существуют в каждом цикле. Сделайте дочерний выход, если файл удален.
Другим способом (более элегантным) может быть использование сигнала linux. реализовать прослушиватель сигналов и остановить его, если он ловит сигнал SIGUSR1 или SIGUSR2. см. «сигнал человека 2», чтобы получить помощь. Недостатком является то, что если ваш родительский процесс / поток запускает несколько дочерних процессов, все они остановятся при получении сигнала (остановка определенного дочернего элемента невозможна)
Надеюсь, это поможет.