有名管道

创建有名管道

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ 
        
    int ret = mkfifo("myfifo", 0664);//创建有名管道,管道名为myfifo可以改名,0664为8进制权限
    if(ret < 0)
    {
        perror("mkfifo");
        exit(-1);
    }

    return 0;
} 

向管道传输数据

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{ 
    if(argc < 2)//从命令行接收的命令小于2个
    {
        printf("Usage: %s <fifo_name>\n", argv[0]);
        exit(-1);
    }

    int fd = open(argv[1], O_WRONLY);//open打开文件 返回文件描述符,详细见后面
    if(fd < 0)
    {
        perror("open");
        exit(-1);
    }
    
    printf("open ok!\n");

    char buf[64] = {0};
    while(1)
    {
        fgets(buf, 64, stdin);//stdin标准输入(键盘),输入到buf
        write(fd, buf, 64);//将buf的数据写入fd
    }

    return 0;
} 

从管道接收数据

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{ 
    if(argc < 2)//从命令行接收的命令小于2个
    {
        printf("Usage: %s <fifo_name>\n", argv[0]);
        exit(-1);
    }

    int fd = open(argv[1], O_RDONLY);//open打开文件 返回文件描述符,详细见后面
    if(fd < 0)
    {
        perror("open");
        exit(-1);
    }
    
    printf("open ok!\n");

    char buf[64] = {0};
    while(1)
    {
        read(fd, buf, 64);//将fd的内容给buf
        printf("%s", buf);
    }

    return 0;
} 

alt

alt

全部评论

相关推荐

Natrium_:这时间我以为飞机票
点赞 评论 收藏
分享
10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务