#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FIFO_SERVER "/tmp/myfifo"
main(int argc,char** argv) //argc:参数个数? argv:参数
{
int fd;
char w_buf[100];
int nwrite;
int nread;
if(fd==-1)
if(errno==ENXIO)
printf("open error; no reading process\n");
fd=open(FIFO_SERVER,O_RDWR,0); //writeonly,管道已在read中创建,可以直接打开。
if(argc==1)
printf("Please send something\n");
printf("Input filename:\n");
scanf("%s",w_buf);
//strcpy(w_buf,argv[1]);
if((nwrite=write(fd,w_buf,100))==-1) //write
{
if(errno==EAGAIN)
printf("The FIFO has not been read yet.Please try later\n");
}
else
printf("write %s to the FIFO\n",w_buf);
sleep(10);
while(1){
nread=read(fd,w_buf,100);
if(nread>0){
printf("read %s from FIFO\n",w_buf);
break;
}
}
}
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FIFO "/tmp/myfifo" //管道位置
main(int argc,char** argv)
{
char buf_r[100];
char buf[100];
int fd;
int nread;
if((mkfifo(FIFO,O_CREAT|O_EXCL)<0)&&(errno!=EEXIST)) //创建并执行
printf("cannot create fifoserver\n");
printf("Preparing for reading bytes...\n");
memset(buf_r,0,sizeof(buf_r));
fd=open(FIFO,O_RDWR,0); //readonly 不阻塞
if(fd==-1)
{
perror("open");
exit(1);
}
while(1)
{
memset(buf_r,0,sizeof(buf_r));
nread=read(fd,buf_r,100);
/*if((nread=read(fd,buf_r,100))==-1){ //读取管道
if(errno==EAGAIN)
printf("no data yet\n");
}*/
if(nread>0){
printf("read %s from FIFO\n",buf_r);
//sleep(100);
break;
}
//sleep(1);
}
strcpy(buf,"./");
strcat(buf,buf_r);
write(fd,buf,100);
pause();
unlink(FIFO);
}