Dears,Как ребенок может передать родительскому процессу для создания нового ребенка?
Я пишу приложение сетевого сервера с использованием C++.
При запуске он создает сокет-слушатель и определяемое пользователем количество дочерних процессов (работников), каждый из которых контролирует слушателя (используя kqueue, epoll и т. Д.) Для новых клиентских подключений, accept()
и создает поток для обработки ответов. После того, как рабочий дочерний процесс отвечает определенному пользователем количеству клиентских запросов, он должен указать родительскому процессу создать новый дочерний процесс, дождаться завершения всех потоков и затем выйти.
Мой вопрос: если у меня есть функция (create_child()
) в моем родителе, которая создает дочерний процесс, могу ли я просто вызвать его изнутри дочернего элемента и получить новый дочерний элемент родительского процесса (желаемый результат), или это будет создать ребенка ребенка? Ex. (Псевдо-код):
void create_child() {
//create child process
}
int main()
{
//do things
if(fork() == 0) {
//do things
create_child(); //is result a child of parent or child of child?
}
}
Я предпочитаю не использовать трубы, я хочу, чтобы избежать его над головой, но, пожалуйста, скажите мне, если это единственное решение. В настоящее время у меня нет системы Linux, чтобы написать простую программу и проверить, что происходит, но в моих поисках я где-то читал, что он создаст дочерний процесс дочернего процесса. Итак, Как создать ребенка родителя из другого ребенка?
Прошу прощения, если мне становится трудно понять, я был немного сонлив при написании этого вопроса. Заранее спасибо за вашу помощь.
Если вилка() вернула 0, вы уже в дочернем процессе, когда вы получаете вашу функцию create_child.Этот процесс является дочерним процессом, который называется fork. Исходный родительский процесс не имеет особого значения и не отслеживается fork. – Donnie
Что еще будет делать родительский процесс? Почему бы родительский процесс не наблюдал за завершением работы с дочерним элементом и не создал новый ребенок? – Beta
@ Donnie, я это знаю. То, что я хочу, - это какой-то способ, изнутри дочернего элемента (после fork() == 0), сообщить родителям о создании нового ребенка. –