двусторонняя связь между дочерними и родительскими процессами в C с помощью каналов
Я хочу, чтобы родительские и дочерние процессы взаимодействовали в C linux с помощью каналов. Я создал два файловых дескриптора. один для родителя к ребенку, то есть readpipe и другой writepipe для viceversa.
Но я получаю null в качестве вывода для строк ch и ch1 в моем коде ниже.
Пожалуйста, помогите мне в этом.
#include <stdio.h> #include<stdlib.h> #include #include<unistd.h> int main() { pid_t pid; int r; char *ch=NULL; char *ch1=NULL; int readpipe[2]; int writepipe[2]; int a; int b; a=pipe(readpipe); b=pipe(writepipe); // check a and b pid=fork(); // check pid if(pid==0) { //CHILD PROCESS close(readpipe[1]); close(writepipe[1]); read(readpipe[0],ch,sizeof(ch)); printf("\nREAD = %s",ch); close(readpipe[0]); ch1="YES"; write(writepipe[1],ch1,sizeof(ch1)); close(writepipe[1]); } else { //PARENT PROCESS close(writepipe[0]); close(writepipe[1]); ch="HI!! YOU THERE"; write(readpipe[1],ch,sizeof(ch)); close(readpipe[1]); read(writepipe[1],ch1,sizeof(ch1)); printf("\nACK RECEIVED %s",ch1); close(writepipe[1]); } return 0; }
Спасибо...:)
Babita22
спасибо @Richard за то, что он сделал это ясно. Как это сделать, кстати?
Richard MacCutchan
Нажмите кнопку Улучшить вопрос ссылка, и вы можете отредактировать свой вопрос. Затем вы увидите теги <pre>, которые я добавил вокруг вашего кода. Почему бы не посмотреть на все пункты меню над окном редактирования, чтобы увидеть, для чего они существуют?