Оглядевшись некоторое время, я не нашел ответа на то, что, на мой взгляд, было бы простым делом.
Я пишу на PHP, и мне нужно запустить дочерний процесс от родителя. Дочерний процесс должен быть неблокирующим: родитель должен иметь возможность продолжить обработку, пока он работает в фоновом режиме. (Обратите внимание, что я не могу использовать разветвление процесса, потому что родитель и потомок не являются одним и тем же процессом.) Как только родитель завершит обработку или неожиданно падает, дочерний процесс должен быть прекращен.
В настоящее время я реализовал это с помощью отдельного дочернего процесса, и он работает довольно хорошо … до тех пор, пока не произойдет сбой родительского процесса. Со временем, если многие родители потерпят крах, совокупность незавершенных дочерних процессов раздувает систему, как полчища злых варваров.
Я не могу проверить, запущен ли дочерний процесс-сирота, и завершить его до запуска родительского процесса — могут быть другие родительские процессы, работающие со своими собственными дочерними процессами, и невозможно определить, какой родитель использует, какой дочерний элемент и какой дочерний элемент является сиротой.
Любая помощь будет оценена!
Исходя из комментария Н.Б. и не зная, как это закодировано, мое единственное предложение о том, как с этим справиться, было бы из обработки сбоев. Это происходит сбой из-за создаваемого исключения, которое вы можете перехватить либо в родительском классе, либо из того места, где осуществляется управление родительским классом. Если да, то можете ли вы тогда закрыть свои дочерние процессы из обработчика исключений? Возможно, у вас все еще должна быть какая-то ручка, чтобы добраться до дочерних процессов оттуда.
Других решений пока нет …