以下是无名管道的例子,大家可以留言问问题。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main (void)
{
int len =0;
char buf[100];
memset(buf, 0,sizeof(buf));//定义从fifo里面读的数据的缓冲
int fd = open ("fifo1",O_RDONLY);//以只读方式打开
while ((len = read(fd,buf,sizeof(buf))>0))//a如果read所读的fd所指文件提前管壁,那么返回负数;
{ //这里为什么会等待writefifo写完,不会抢占fifo吗
printf("%s\n",buf);
memset(buf, 0,sizeof(buf));
}
printf("%d\n",len);
close(fd);
return 0;
}
/* ******** ******** */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main (void)
{
int len =0;
char buf[100];
memset(buf, 0,sizeof(buf));
int fd = open ("fifo1",O_WRONLY);
while (1)
{
// scanf("%s",buf);
read(STDIN_FILENO,buf,sizeof(buf));
if(buf[0]=='0')
break;
write(fd,buf,strlen(buf));
memset(buf, 0,sizeof(buf));
}
close(fd);
return 0;
}