外贸网站论文,湘潭今天刚刚发生的新闻,app网站开发招聘,网站内容页收录FIFO通信#xff08;first in first out#xff09; FIFO 有名管道#xff0c;实现无血缘关系进程通信。 ----创建一个管道的伪文件 a.mkfifo testfifo 命令创建 b.也可以使用函数int mkfifo(const char *pathname, mode_t mode); ----内核会针对fifo文件开辟一个缓冲区first in first out FIFO 有名管道实现无血缘关系进程通信。 ----创建一个管道的伪文件 a.mkfifo testfifo 命令创建 b.也可以使用函数int mkfifo(const char *pathname, mode_t mode); ----内核会针对fifo文件开辟一个缓冲区操作fifo文件可以操作缓冲区实现进程间通信–实际上就是文件读写 man 3 mkfifo
#include sys/types.h
#include sys/stat.h
int mkfifo(const char *pathname, mode_t mode);注意事项 FIFOs Opening the read or write end of a FIFO blocks until the other end is also opened (by another process or thread). See fifo(7) for further details. 打开fifo文件时候read端会阻塞等待write端openwrite端同理也会阻塞等待另外一段打开。
代码示例 file_w.c 写端
#include stdio.h
#include stdlib.h
#include sys/wait.h
#include sys/types.h
#include sys/stat.h
#include unistd.h
#include fcntl.h
#include string.hint main(int argc, char *argv[]) {if(argc ! 2) {printf(./a.out filename1\n);return -1;}printf(begin open w\n);int o_ret open(argv[1], O_WRONLY);printf(end open w\n);char buf[256];int num 0;while (1) {memset(buf, \0, sizeof(buf));sprintf(buf, xiaoming--%d, num);printf(strlen(buf) %d\n, strlen(buf));write(o_ret, buf, strlen(buf));sleep(1);}close(o_ret);return 0;
}file_r.c 读端
#include stdio.h
#include stdlib.h
#include sys/wait.h
#include sys/types.h
#include sys/stat.h
#include unistd.h
#include fcntl.h
#include string.hint main(int argc, char *argv[]) {if(argc ! 2) {printf(./a.out filename1\n);return -1;}printf(begin open r\n);int o_ret open(argv[1], O_RDONLY);printf(end open r\n);char buf[256];int num 0;while (1) {memset(buf, \0, sizeof(buf));read(o_ret, buf, sizeof(buf));printf(strlen(buf) %d\n, strlen(buf));printf(read is%s\n, buf);}close(o_ret);return 0;
}