//fd=open(FIFO_SERVER,O_WRONLY,0);     //设置阻塞标志     real_wnum=write(fd,w_buf,2048);        if(real_wnum==-1)     {       if(errno==EAGAIN)         printf("write to fifo error; try later\n");     }     else        printf("real write num is %d\n",real_wnum);        real_wnum=write(fd,w_buf,5000);     //5000用于测试写入字节大于4096时的非原子性     //real_wnum=write(fd,w_buf,4096);     //4096用于测试写入字节不大于4096时的原子性          if(real_wnum==-1)       if(errno==EAGAIN)         printf("try later\n"); } 
  程序2:与程序1一起测试写FIFO的规则,第一个命令行参数是请求从FIFO读出的字节数 
#include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include <fcntl.h>    #define FIFO_SERVER "/tmp/fifoserver"    main(int argc,char** argv) {   char r_buf[4096*2];   int  fd;   int  r_size;   int  ret_size;      r_size=atoi(argv[1]);   printf("requred real read bytes %d\n",r_size);      memset(r_buf,0,sizeof(r_buf));      fd=open(FIFO_SERVER,O_RDONLY|O_NONBLOCK,0);   //fd=open(FIFO_SERVER,O_RDONLY,0);   //在此处可以把读程序编译成两个不同版本:阻塞版本及非阻塞版本      if(fd==-1)   {     printf("open %s for read error\n");     exit();   }      while(1)   {     memset(r_buf,0,sizeof(r_buf));     ret_size=read(fd,r_buf,r_size);          if(ret_size==-1) 
		    
                      
		      
		      
		   |