fifo,同時也被稱為有命管道,未命名的管道只能用於有親緣關係之間的程序間的通訊,而命名管道可以實現兩個互不相關之間程序的通訊。在linux下,我們可以通過mkfifo命令建立命名管道,fifo實際上並不占取實際的儲存空間,只是在核心pipe中的乙個鏈結。我們可以通過其大小來檢視。
fifo實際結構為
建立fifo的函式為
int mkfifo(const char*path,mode_t mode)
利用fifo實現不同程序間通訊的例子
#include #include #include #include #include #include #include #define maxsize 1024
#define fifo1 "./myfifo1"
void sys_err(const char *str,int exitno)
int main()
} readfd = open(fifo1,o_rdonly,0);
len = read(readfd,recv,sizeof(recv));
write(stdout_fileno,recv,len);
close(readfd);
unlink(fifo1);
return 0;
}
#include #include #include #include #include #include #include #include #define maxsize 1024
#define fifo1 "./myfifo1"
void sys_err(const char *str,int exitno)
int main()
} writefd = open(fifo1,o_wronly,0);
strcpy(send,"too young to ******");
write(writefd,send,strlen(send));
close(writefd);
unlink(fifo1);
return 0;
}
程序間通訊(FIFO)
一 有名管道 管道沒有名字,因此它們只能用於有乙個公共祖先各個程序之間的通訊,我們無法在無親緣關係的程序之間程序ipc通訊。有名管道即fifo,指先進先出,它是乙個半雙工的資料流,不同於管道的是每乙個fifo有乙個路徑名與之關聯,從而允許無 親緣之間的程序進行通訊。二 建立的函式 fifo由mkfi...
程序間通訊之FIFO
管道使用起來很方便,但是沒有名字,因此只能用於具有親緣關係的程序之間進行通訊,而有名管道就克服了這一點,fifo管道提供了乙個路徑名與之相對應,即使程序不是親緣程序,只要能訪問到該路徑就能使用fifo進行通訊。有名管道的建立 include include int mkfifo const char...
linux 程序間通訊 FIFO
建立乙個有名管道,解決無血緣關係的程序通訊,fifo 建立乙個fifo檔案,儲存在硬碟上。程序預先知道檔案的名字,便可以通過這個標識進行通訊。可以通過函式建立檔案 int mkfifo const char pathname,mode t mode 可以通過命令mkfifo穿件fifo檔案 void...