Не так давно создавал тут тему. Про «Родительский процесс создает n дочерних процессов и передает им поочередно числа .Дочерний процесс при создании принимает имя файла. При работе дочерний процесс получает числа от родительского процесса и пишет их в файл.»
С чем-то помогли, с чем-то разобрался сам. Но в фаил почему-то не пишется. Предварительно создал Foo_N(N=1,2,3...).txt Что не правильно?
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (void)
{
int status, n, q=0, result;
pid_t pid;
size_t i;
const size_t MAX_FILE_NAME = 100;
char file_name[MAX_FILE_NAME],somedata[10];
int data_processed, filepipes[2];
int PIP1[2];
printf("Сколько дочерних процессов создать?\n");
scanf("%d", &n);
pipe(PIP1);
// 0 read
// 1 write
printf("Enter string\n");
for(q=1;q<=n;q++){
snprintf(file_name, MAX_FILE_NAME, "Foo_%d.txt", q);
if ((pid = fork()) == -1){
exit(-1);}
if ((pid=fork()) != 0) {
//PARENT
close(PIP1[0]);//выход не нужен
dup2(PIP1[1], 0);//на вход stdin
printf("I send file name: %s\n", file_name);
waitpid(-1, &status, 0);
}
else {
//CHILD
close(PIP1[1]);
dup2(PIP[0],*file_name);
printf("I recv file name: %s\n", file_name);
break;
}
}
}