[Linux管道和IPC]命名管道操做--命名管道通訊接收服務器端

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <linux/stat.h>
#include <errno.h>

#define FIFO_FILE "MYFIFO"  //命名管道名稱

int main(int argc,char * argv)
{
  FILE *fp;
  char readbuf[80];   //讀緩衝區
  // 建立命名管道文件
  if((fp=fopen(FIFO_FILE,"r"))==NULL)
  {
    umask(0);
    mknod(FIFO_FILE,S_IFIFO|0666,0);
  }
  else
  {
    fclose(fp);  //若是存在關閉fp
  }
  while(1)
  {
   //打開命名管道文件
    if((fp = fopen(FIFO_FILE,"r"))==NULL)
    {
      printf("打開fifo失敗. \n");
      exit(1);
    }
    // 從命名管道中讀數據
    if(fgets(readbuf,80,fp)!=NULL)
    {
      printf("接收到字符串::%s \n", readbuf);
      fclose(fp);
    }
    else
    {
      if(ferror(fp))  //若是出錯
      {
        perror("讀文件失敗.\n");
        exit(1);
      }
    }
  }
  return 0;
}
相關文章
相關標籤/搜索