Я пытаюсь сделать это, у меня есть родительский и дочерний процесс. Я пытаюсь прочитать файл и передать весь контент ребенку. Входной файл содержит записи. Я должен читать один раз за раз и переходить к ребенку. Но что бы я ни делал. ребенок читает только первую запись, а не все остальные. Я тестировал свой метод, получая все записи из входного файла, но не могу записать их все для ребенка. Любая идея, пожалуйста.Как передать несколько записей ребенку из родителя с помощью fork
struct product_record {
int idnumber; // Unique identification
char name[PRODUCTSIZE]; // String description
double price; // Unit cost
};
int pid, mypipe[2], status;
int main(int argc, char **argv)
{
int result;
result = pipe(mypipe);//create pipes
if (result < 0) {
perror("pipe creation error");//failure in creating a pipe
exit (1);
}//if
if ((pid = fork()) == 0)
{
read(mypipe[0], &product, sizeof(product));
exit(0);
}
else if (pid == -1)
{
cout << "Fork failed" << endl;
exit(1);
}
else
{//parent
parentReadsFromTheFile(argv);//argv inputfile name
wait(&status);
}
return 0;//Return to the OS.
}//main
void parentReadsFromTheFile(char **args)
{
while (getline(inputFile, line)) //read a line till EOF
{
//put read record into product
write(mypipe[1], &product, sizeof(product));//Write to pipe
}
}
Совместите ваш код правильно и не комментировать очевидное. – chqrlie
Опубликовать определение 'product'. – chqrlie
Я отредактировал и объяснил лучше. Благодарю. – user2934615