Maison base de données tutoriel mysql 2.进程间的管道通信

2.进程间的管道通信

Jun 07, 2016 pm 03:48 PM
à propos 简单 管道 编写 进程 通信

(一) 编写一个关于进程通信的简单程序,子进程送一串消息给父进程,父进程收到消息后把它显示出来。 要求: 两个子进程分别向管道写一句话: Child process 1 is sending a message! Child process 2 is sending a message! 而父进程则从管道中读出来自两

(一) 编写一个关于进程通信的简单程序,子进程送一串消息给父进程,父进程收到消息后把它显示出来。

要求:

两个子进程分别向管道写一句话:
Child process 1 is sending a message!

Child process 2 is sending a message!

而父进程则从管道中读出来自两个子进程的消息,显示屏幕上,且父进程要先接收子进程1的消息,在接受子进程2的消息。

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

#include<stdio.h>

#include<string.h>

#include<unistd.h>

#define SIZE 50

int main()

{

    int p1, p2;

    int fd[2];

    char str[50];

    while((pipe(fd)) == -1);

    while((p1 = fork()) == -1);

    if(p1)

    {

        while((p2 = fork()) == -1);

        if(p2)

        {

            //parent

            wait(0);

            read(fd[0], str, SIZE);

            printf("%s\n", str);

            wait(0);

            read(fd[0], str, SIZE);

            printf("%s\n", str);

        }

        else

        {

            //child2

            lockf(fd[1], 1, 0);

            sleep(2);

            strcpy(str, "Child process 2 is sending messages!\n");

            write(fd[1], str, SIZE);

            lockf(fd[1], 0, 0);

        }

    }

    else

    {

        //child1

        lockf(fd[1], 1, 0);

        sleep(2);

        strcpy(str, "Child process 1 is sending messages!\n");

        write(fd[1], str, SIZE);

        //sleep(2);

        lockf(fd[1], 0, 0);

 

    }

}</unistd.h></string.h></stdio.h>

Copier après la connexion

(二)父进程等待用户从控制台(键盘)输入字符串,通过管道传给子进程;子进程收到后,对字符串进行大小写转换后,输出到标准输出(显示器)。

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

#include<stdio.h>

#include<string.h>

#include<unistd.h>

#define SIZE 50

int main()

{

    int p, fd[2];

    int i = 0;

    char str[SIZE];

    while((pipe(fd)) == -1);

    while((p = fork()) == -1);

    if(p)

    {

        //parent

        lockf(fd[1], 1, 0);

        printf("Please input the string:");

        scanf("%s", str);

        write(fd[1], str, SIZE);

        lockf(fd[1], 0, 0);

        wait(0);

 

        read(fd[0], str, SIZE);

        printf("reversed string is : %s\n", str);

    }

    else

    {

        read(fd[0], str, SIZE);

        while(str[i] != '\0')

        {

            if('A' <br>

<br>

 

 

 

</unistd.h></string.h></stdio.h>

Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nouvelle génération de technologie haut débit par fibre optique - 50G PON Nouvelle génération de technologie haut débit par fibre optique - 50G PON Apr 20, 2024 pm 09:22 PM

Nouvelle génération de technologie haut débit par fibre optique - 50G PON

Comment utiliser des tubes pour lire et écrire des fichiers dans Golang ? Comment utiliser des tubes pour lire et écrire des fichiers dans Golang ? Jun 04, 2024 am 10:22 AM

Comment utiliser des tubes pour lire et écrire des fichiers dans Golang ?

Explication détaillée de la méthode d'ajustement des priorités des processus Linux Explication détaillée de la méthode d'ajustement des priorités des processus Linux Mar 15, 2024 am 08:39 AM

Explication détaillée de la méthode d'ajustement des priorités des processus Linux

Une brève histoire de la technologie Internet à large bande Une brève histoire de la technologie Internet à large bande Apr 16, 2024 am 09:00 AM

Une brève histoire de la technologie Internet à large bande

L'histoire du développement des souris sans fil L'histoire du développement des souris sans fil Jun 12, 2024 pm 08:52 PM

L'histoire du développement des souris sans fil

Analysez pourquoi les processus Linux entrent en mode veille Analysez pourquoi les processus Linux entrent en mode veille Mar 21, 2024 am 11:06 AM

Analysez pourquoi les processus Linux entrent en mode veille

Pourquoi les processus sous Linux dorment-ils ? Pourquoi les processus sous Linux dorment-ils ? Mar 20, 2024 pm 02:09 PM

Pourquoi les processus sous Linux dorment-ils ?

Le sommet principal de la montagne Changbai peut accéder normalement à Internet : Jilin Mobile et ZTE ont réalisé une agrégation de trois porteuses de 2,6 G + 700 M à des fins commerciales, avec un débit de pointe de plus de 2,53 Gbit/s. Le sommet principal de la montagne Changbai peut accéder normalement à Internet : Jilin Mobile et ZTE ont réalisé une agrégation de trois porteuses de 2,6 G + 700 M à des fins commerciales, avec un débit de pointe de plus de 2,53 Gbit/s. Jul 25, 2024 pm 01:20 PM

Le sommet principal de la montagne Changbai peut accéder normalement à Internet : Jilin Mobile et ZTE ont réalisé une agrégation de trois porteuses de 2,6 G + 700 M à des fins commerciales, avec un débit de pointe de plus de 2,53 Gbit/s.

See all articles