有名管道通信:
又名fifo文件。
學前知識儲備
對系統函數open ,read,write會用,有一定的瞭解。
FIFO文件的特性(結合普通文件對比)
@1:讀取FIFO文件的進程只能以"O_RDONLY"方式打開FIFO文件
@2:寫FIFO文件的進程只能以“O_WRONLY”f方式打開FIFO文件
@3:FIFO文件裏面的內容被讀取後就消失了,而普通文件的不會
函數原型:
#include<sys/types.h>
#include<sys/stat.h>
int mkfifo(const char* pathname,mode_t mode)
Linux下操作命令
vim fifo_write.c
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
int main(void)
{
int fd=0;
/*創建fifo文件*/
mkfifo("/tmp/fifomy".0666);
/*以只寫的方式打開FIFO文件*/
fd=open("/tmp/fifomy",O_WRONLY);
/*寫入數據*/
write(fd,"hello world",12);
close(fd);
return 0;
}
生成可執行文件:gcc fifo_write.c -o fifo_write
vim fifo_read.c
#include<stdio.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<unistd.h>
int main(void)
{
int fd=0;
char c_buf[15];
/*以只讀的方式打開FIFO文件*/
fd=open("/tmp/fifomy",O_RDONLY);
read(fd,c_buf,12);
printf("read is %d\n",c_buf);
close(fd);
unlink("/tmp/fifomy");
return 0;
}
生成可執行文件:
gcc fifo_read.c -o fifo_read
再開二個終端,一個運行命令 ./fifo_write,另一個運行命令 ./fifo_read