Bonjour,
je suis entrain d'étudier le C et la communication inter-processus par C et je suis tombé sur un code dont je ne comprend pas l'algorithme. Quelqu'un pourrait-t-il m'expliquer ?
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// C program to illustrate 
// pipe system call in C 
// shared by Parent and Child 
#include <stdio.h> 
#include <stdlib.h>
#include <unistd.h> 
#include <sys/types.h>
#include <sys/wait.h>
#define MSGSIZE 16 
char* msg1 = "hello, world #1"; 
char* msg2 = "hello, world #2"; 
char* msg3 = "hello, world #3"; 
 
int main() 
{ 
    char inbuf[MSGSIZE]; 
    int p[2], pid, nbytes; 
 
    if (pipe(p) < 0) 
        exit(1); 
 
    /* continued */
    if ((pid = fork()) > 0) { 
        write(p[1], msg1, MSGSIZE); 
        write(p[1], msg2, MSGSIZE); 
        write(p[1], msg3, MSGSIZE); 
        //printf("% s",p[1]);
 
        // Adding this line will 
        // not hang the program 
        // close(p[1]); 
        wait(NULL); 
    } 
 
    else { 
        // Adding this line will 
        // not hang the program 
        // close(p[1]); 
        while ((nbytes = read(p[0], inbuf, MSGSIZE)) > 0) 
            printf("% s\n", inbuf); 
        if (nbytes != 0) 
            exit(2); 
        printf("Finished reading\n"); 
    } 
    return 0; 
}
je vous laisse le lien aussi : https://github.com/Liadc/operating-s...pipesExample.c