有名管道通信

有名管道通信:

    又名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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章