Я хочу создать нескольких детей, используя fork()
, но у меня возникли проблемы.
LIKE:
///////////////////////// these are some class objects creation and calling
// There are some functions calling from another class. about 5 functions I invoked.
// and some variables like.
pid_t PID;
int status = 0;
char *x = new char[10];
///////////////////////// This for loop give me multiple children
// now one parent have multiple children in this case 10
for( int i=0; i<10; i++ )
{
mNo++;
rNo++;
PID = fork();
if( PID == FORK_ERROR ) // fork ERROR!
{
fprintf(stderr, "ERROR! In fork() [FORCE EXITING]... %d\n", errno);
exit(EXIT_FAILURE);
}
else if( PID == CHILD ) // Do Child Stuff Here...
{
exit(status);
}
else // Do parent Stuff Here...
{
}
}
PID = wait(&status);
////////////////////////////////////////////
Это был мой код, который я реализовал, но есть некоторые проблемы.
Я хочу спросить, что когда я создаю ребенка в памяти, он создает дубликат памяти. Также объекты, которые я объявил; их повторно вызывают, вызывая fork()
, значит ли это, что для каждого ребенка в памяти есть объекты, которые повторно вызывают в классе?
Я хочу, чтобы, если я выполнял форк, и предыдущие вызовы функций и переменных были одинаковыми для каждого дочернего элемента, но не для неидемпотентных функций. Я надеюсь, что вы поняли. Я знаю, что это очень простая проблема, но проект, над которым я работаю, очень важен, и он должен быть реализован с fork()
, а не в каналах или потоках.
Более того, я повторяю свой вопрос, что если я fork()
, что происходит с объектами и переменными. Перед вызовом fork они просто перераспределяются или их снова вызывают для каждого ребенка? Но то, что я вижу, это то, что их повторно вызывают за каждого ребенка, чего я не хочу. Так что мне делать?