#include <stdio.h>
#include <unistd.h>
int main(int argc, char **argv) {
int send[2];
if(pipe(send)!=0) {
} else {
int pid = fork();
if(pid < 0) {
}
else if(pid>0) {
//Parent process
close(send[0]); // close pipe input
dup2(send[1], 1); // replace stdout with pipe output
// send message to child
fprintf(stdout
, "send to child\n"); } else {
//Child process
close(send[1]); // close pipe output
dup2(send[0], 0); // replace stdin with pipe input
char message[2048];
if(fgets(message
, 2048, stdin
) != NULL
) { fprintf(stdout
, "message from parent:%s", message
); }
}
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICAgaW50IHNlbmRbMl07CiAgICBpZihwaXBlKHNlbmQpIT0wKSB7CiAgICAgICAgcGVycm9yKCJwaXBlIik7CiAgICB9IGVsc2UgewogICAgICAgIGludCBwaWQgPSBmb3JrKCk7CiAgICAgICAgaWYocGlkIDwgMCkgewogICAgICAgICAgICBwZXJyb3IoImZvcmsiKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihwaWQ+MCkgewogICAgICAgICAgICAvL1BhcmVudCBwcm9jZXNzCiAgICAgICAgICAgIGNsb3NlKHNlbmRbMF0pOyAgLy8gY2xvc2UgcGlwZSBpbnB1dCAKICAgICAgICAgICAgZHVwMihzZW5kWzFdLCAxKTsgLy8gcmVwbGFjZSBzdGRvdXQgd2l0aCBwaXBlIG91dHB1dAoKICAgICAgICAgICAgLy8gc2VuZCBtZXNzYWdlIHRvIGNoaWxkCiAgICAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAic2VuZCB0byBjaGlsZFxuIik7CiAgICAgICAgICAgIGZmbHVzaChzdGRvdXQpOwogICAgICAgIH0gIGVsc2UgewogICAgICAgICAgICAvL0NoaWxkIHByb2Nlc3MgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgY2xvc2Uoc2VuZFsxXSk7ICAgICAgLy8gY2xvc2UgcGlwZSBvdXRwdXQgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICBkdXAyKHNlbmRbMF0sIDApOyAvLyByZXBsYWNlIHN0ZGluIHdpdGggcGlwZSBpbnB1dAoKICAgICAgICAgICAgY2hhciBtZXNzYWdlWzIwNDhdOwogICAgICAgICAgICBpZihmZ2V0cyhtZXNzYWdlLCAyMDQ4LCBzdGRpbikgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJtZXNzYWdlIGZyb20gcGFyZW50OiVzIiwgbWVzc2FnZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0=