serverPipe.c实现:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#define ERR_EXIT(m)\
do{\
perror(m);\
exit(EXIT_FAILURE);\
}while(0)
int main()
{
umask(0);
if(mkfifo("mypipe",0644) < 0)
{
ERR_EXIT("mkfifo");
}
int rfd = open("mypipe",O_RDONLY);
if(rfd < 0)
{
ERR_EXIT("open");
}
char buf[1024];
while(1)
{
buf[0] = 0;
printf("please wait...\n");
ssize_t s = read(rfd,buf,sizeof(buf)-1);
if(s > 0)
{
buf[s-1] = 0;
printf("client say# %s\n",buf);
}
else if(s == 0)
{
printf("client quit,exit now!\n");
exit(EXIT_SUCCESS);
}
else
{
ERR_EXIT("read");
}
}
close(rfd);
return 0;
}
clientPipe.c实现:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#define ERR_EXIT(m)\
do{\
perror(m);\
exit(EXIT_FAILURE);\
}while(0)
int main()
{
int wfd = open("mypipe",O_WRONLY);
if(wfd < 0)
{
ERR_EXIT("open");
}
char buf[1024];
while(1)
{
buf[0] = 0;
printf("please Enter# ");
fflush(stdout);
ssize_t s = read(0,buf,sizeof(buf)-1);
if(s > 0)
{
buf[s] = 0;
write(wfd,buf,strlen(buf));
}
else if(s <= 0)
{
ERR_EXIT("read");
}
}
close(wfd);
return 0;
}
server端截图:
client端截图: