client.c:
 1 #include
  2#include
  3#include
  4#include
  5#include
  6#include
  7#include
  8#define _PATH_ "./tmp"
  9#define SIZE 100
 10int main()
 11 {
 12 if(mkfifo(_PATH_,0666|S_IFIFO)<0)
 13   {
 14    perror("mkfifo");
 15    return -1;
 16   }
 17   intfd=open(_PATH_,O_WRONLY);
 18  if(fd<0)
 19   {
 20   perror("open");
 21   return -1;
 22   }
 23  char buf[SIZE];
 24  memset(buf,'\0',SIZE);
 25  while(1)
 26  {
 27   scanf("%s",buf);
 28   write(fd,buf,strlen(buf));
 29  }
 30 close(fd);
 31 return 0;
 32 }
 
 
 server.c:
 
 1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
  7#include
  8#define _PATH_ "./tmp"
  9#define SIZE 100
 10int main()
 11 {
 12   intfd=open(_PATH_,O_RDONLY);
 13  if(fd<0)
 14   {
 15   perror("open");
 16   return -1;
 17   }
 18  char buf[SIZE];
 19  while(1)
 20  {
 21
 22  memset(buf,'\0',SIZE);
 23   read(fd,buf,sizeof(buf));
 24   printf("%s\n",buf);
 25  }
 26 close(fd);
 27 return 0;
 28 }
 
 
 
 Makefile:
 
  1.PHONY:all
  2 all:client server
  3 server:server.c
  4         gcc -o $@ $^
  5client:client.c
  6         gcc -o $@ $^
  7.PHONY:clean
  8clean:
  9         rm -f client server tmp

进程通信 (命名管道 单向通信)_第1张图片