pipeClient.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<string.h>
#include <unistd.h>
int main()
{
int ret;
int fd;
printf("aaa\n");
fd = open("porpipe", O_RDWR);
printf("111\n");
if(fd < 0)
{
perror("open porpipe pipe fail");
return -1;
}
printf("222\n");
char send[100] = "123";
ret = write(fd, send, strlen(send));
printf("333\n");
if(ret < 0)
{
perror("write pipe fail");
}
close(fd);
return 0;
}
pipeServer.c
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main()
{
int fd;
int ret;
unlink("porpipe");
ret = mkfifo("porpipe", 0666);
if(ret != 0){ // 出错
perror("mkfifo");
}
//起进程等待管道消息
fd = open("porpipe", O_RDONLY);
if(fd < 0)
{
perror("open porpipe pipe fail");
}
//从管道读消息;循环的从管道中读取消息
while(true)
{
char recv[100] = {0};
read(fd, recv, sizeof(recv));
//if读到消息;调用推送代码
if(strcmp(recv, "123") == 0)
{
printf("read data from pipe success\n");
printf("read the date is: %s\n",recv);
}
}
//关闭管道
close(fd);
return 0;
}