fifo适合进程间通信
fifowrite.cpp
#include<sys/stat.h>
#include<cstdio>
#include<cstring>
#include<sys/types.h>
#include<iostream>
#include<unistd.h>
#include<cstdlib>
#include<fcntl.h>
void sys_err(const char *str)
{
perror(str);
exit(-1);
}
int main(int argc,char *argv[])
{
int fd,i;
char buf[1024];
if(argc < 2)
{
std::cout<<"execname filename"<<std::endl;
return -1;
}
fd = open(argv[1],O_WRONLY);
if(fd < 0)
{
sys_err("open");
}
i = 0;
while(1)
{
sprintf(buf,"hello %d\n",i++);
write(fd,buf,strlen(buf));
sleep(1);
}
close(fd);
return 0;
}
piforead.cpp
#include<sys/stat.h>
#include<cstdio>
#include<cstring>
#include<sys/types.h>
#include<iostream>
#include<unistd.h>
#include<cstdlib>
#include<fcntl.h>
void sys_err(const char *str)
{
perror(str);
exit(-1);
}
int main(int argc,char *argv[])
{
int fd,len;
char buf[1024];
if(argc < 2)
{
std::cout<<"execname filename"<<std::endl;
return -1;
}
fd = open(argv[1],O_RDONLY);
if(fd < 0)
{
sys_err("open");
}
len = 0;
while(1)
{
len = read(fd,buf,sizeof(buf));
write(STDOUT_FILENO,buf,len);
sleep(1);
}
close(fd);
return 0;
}