3.5命名管道的数据通信编程实现(第二阶段)
代码展示
read.c
#include<sys/types.h>
#include<sys/stat.h>
#include<stdio.h>
#include<errno.h>
#include <fcntl.h>
//int mkfifo(const char *pathname, mode_t mode);
int main()
{
char buf[1024]= {0};
int nread = 0;
if( mkfifo("./file",0600) == -1 && errno != EEXIST){
printf("mkfifo failuer\n");
perror("why");
}
int fd = open("./file",O_RDONLY);
printf("open success\n");
while(1){
nread = read(fd,buf,30);
printf("read %d byte from fifo,context:%s\n",nread,buf);
}
close(fd);
return 0;
}
write.c
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
//int mkfifo(const char *pathname, mode_t mode);
int main()
{
char *str = "message from fifo";
int fd = open("./file",O_WRONLY);
int cnt = 0;
printf("write success\n");
while(1){
write(fd,str,strlen(str));
sleep(1);
if(cnt == 5){
break;
}
// cnt++;
}
close(fd);
return 0;
}

这篇博客展示了如何使用C语言实现命名管道(FIFO)进行数据通信。`read.c`程序创建并打开FIFO文件,持续读取数据;`write.c`则向FIFO写入指定字符串,每秒写一次,共写入5次。通过这两个程序,读者可以理解FIFO在进程间通信的基本用法。
1万+

被折叠的 条评论
为什么被折叠?



