Я закодировал этот (надеюсь, правильный) анонимный канал в C с Ubuntu, но я не могу подключиться в обоих направлениях. Как я могу исправить это самым простым способом, подключиться от дочернего к родительскому и от родителя к ребенку?двунаправленная анонимная труба в c
int main() {
int ret_val;
int pfd[2];
char buff[32];
char string1[]="String for pipe I/O";
ret_val = pipe(pfd);
if (fork() == 0) {
// child
close(pfd[0]); // close the read end
ret_val = write(pfd[1],string1,strlen(string1)); /*Write to pipe*/
if (ret_val != strlen(string1)) {
printf("Write did not return expected value\n");
exit(2); // Print error message and exit
}
}
else {
// parent
close(pfd[1]); /* close the write end of pipe */
ret_val = read(pfd[0],buff,strlen(string1)); /* Read from pipe */
if (ret_val != strlen(string1)) {
printf("Read did not return expected value\n");
exit(3); /* Print error message and exit */
}
printf("parent read %s from the child program\n",buff);
}
exit(0);
}
Лучшая вещь - сделать вторую трубу на этот раз с перевернутыми концами по сравнению с первым. – Abel