File tree 1 file changed +42
-0
lines changed
1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include <stdio.h>
2
+ #include <unistd.h>
3
+
4
+ int main () {
5
+ int pipefds1 [2 ], pipefds2 [2 ];
6
+ int rs1 , rs2 ;
7
+ int pid ;
8
+ char pipe1writemessage [20 ] = "Welcome" ;
9
+ char pipe2writemessage [20 ] = "Prakhar" ;
10
+ char readmessage [20 ];
11
+ rs1 = pipe (pipefds1 );
12
+
13
+ if (rs1 == -1 ) {
14
+ printf ("Unable to create pipe 1 \n" );
15
+ return 1 ;
16
+ }
17
+ rs2 = pipe (pipefds2 );
18
+
19
+ if (rs2 == -1 ) {
20
+ printf ("Unable to create pipe 2 \n" );
21
+ return 1 ;
22
+ }
23
+ pid = fork ();
24
+
25
+ if (pid != 0 ) // Parent process
26
+ {
27
+ close (pipefds1 [0 ]); // Close the unwanted pipe1 read side
28
+ close (pipefds2 [1 ]); // Close the unwanted pipe2 write side
29
+ printf ("Parent: Write pipe 1 – %s\n" , pipe1writemessage );
30
+ write (pipefds1 [1 ], pipe1writemessage , sizeof (pipe1writemessage ));
31
+ read (pipefds2 [0 ], readmessage , sizeof (readmessage ));
32
+ printf ("Parent: Read pipe 2 – %s\n" , readmessage );
33
+ } else { //child process
34
+ close (pipefds1 [1 ]); // Close the unwanted pipe1 write side
35
+ close (pipefds2 [0 ]); // Close the unwanted pipe2 read side
36
+ read (pipefds1 [0 ], readmessage , sizeof (readmessage ));
37
+ printf ("Child: Read pipe 1 – %s\n" , readmessage );
38
+ printf ("Child: Write pipe 2 – %s\n" , pipe2writemessage );
39
+ write (pipefds2 [1 ], pipe2writemessage , sizeof (pipe2writemessage ));
40
+ }
41
+ return 0 ;
42
+ }
You can’t perform that action at this time.
0 commit comments