Я пытаюсь создать программу, определяющую количество дочерних элементов, определенных пользователем. Родитель должен использовать именованные каналы (это требование) для отправки информации туда и обратно со своими детьми. Итак, мне нужно создать количество именованных каналов, равное количеству разветвляющихся детей. Как я могу сделать это эффективно, и чтобы каждый ребенок знал, как называется его трубка?
pid_t childpid;
for(i = 0; i < numWorker; i++){
// char *pipeName = "somename";
// change the pipeName to reflect the child by adding a suffix
// mkfifo(pipeName, 0666);
childpid = fork();
if(childpid < 0){
perror("fork\n");
}
else if(childpid == 0){
signal(SIGCONT, handleSignalChild);
// how can I open the fifo here and then carry on reading and writing
//inside the while() below?
break; // child exits the creation loop.
}
}
// Main program execution begins here
while(1){
if(childpid == 0){
// read and write to the already opened pipes.
//code to handle child execution.
}
else{
// open all fifo pipes and get ready to read and write stuff.
//code to handle parent execution.
}
}
РЕДАКТИРОВАТЬ : переформулировал вопрос, чтобы сделать его более понятным.