pipe1.c

来自「操作系统的一些实验」· C语言 代码 · 共 47 行

C
47
字号
#include<unistd.h>
#include<signal.h>
#include<stdio.h>

int pid1,pid2;

int main()
{
    int fd[2];
    char OutPipe[100],InPipe[100];
    pipe(fd);
    while((pid1=fork())==-1);
    if(pid1==0)
    {
        lockf(fd[1],1,0);
        sprintf(OutPipe,"child 1 process is sending message!");
        write(fd[1],OutPipe,50);
        sleep(5);
        lockf(fd[1],0,0);
        exit(0);
    }
    else
    {
        while((pid2=fork())==-1);
        if(pid2==0)
        {
            lockf(fd[1],1,0);
            sprintf(OutPipe,"child 2 process sending message!");
            write(fd[1],OutPipe,50);
            sleep(5);
            lockf(fd[1],0,0);
            exit(0);
        }
        else
        {
            wait(0);
            read(fd[0],InPipe,50);
            printf("%s\n",InPipe);

            wait(0);
            read(fd[0],InPipe,50);
            printf("%s\n",InPipe);
            exit(0);
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?