mkfifo 创建管道IO 进程间交互

来源:互联网 发布:大禹 知乎 编辑:程序博客网 时间:2024/05/20 00:49

mkfifo 创建管道IO

一.程序:

1) 接收程序:

[user:lib_hdmanage] cat example/rec.cpp
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#define FIFO "disk_switch"

int main()
{
    char buffer[80];
    int fd = 0;
    unlink(FIFO);
    mkfifo(FIFO,0666);
    while(1)
    {
        if((fd = open (FIFO,O_RDONLY)) < 0)    //阻塞在open函数.等发送端的open函数 ,两个open函数建立连通后才会解除阻塞.
        {
            printf("open error!\n");
            return -1;
        }
        read(fd,buffer,80);
        printf("%s",buffer);
        close(fd);
        fd = 0;
        sleep(1);
    }
    return 0;
}
[user:lib_hdmanage]

 

2)  发送程序:

[user:lib_hdmanage] cat example/send.cpp
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#define FIFO "disk_switch"

int main()
{
    int fd = 0;
    // unlink(FIFO);
    // mkfifo(FIFO,0666);
   
    char s[] = "hello!\n";
    if((fd = open (FIFO,O_WRONLY)) < 0)
    {
        printf("open error!\n");
        return -1;
    }

    write(fd,s,sizeof(s));
    close(fd);
    fd = 0;
    return 0;
}
[user:lib_hdmanage]

 

二.运行结果:

1) 运行:

第一终端:[user:lib_hdmanage] ./example/rec.i386.elf

第二终端:[[user:lib_hdmanage] ./example/send.i386.elf

2)显示:
第一终端:hello!

 

 

原创粉丝点击