Unix/Linux进程间通信——FIFO
来源:互联网 发布:jdk1.8 for linux下载 编辑:程序博客网 时间:2024/05/19 19:44
FIFO("First In, First Out"),有时也被称为有名管道,管道只能在父进程和子进程或兄弟进程之前进行通信,而FIFO则无此限制,即可以在任意进程之间进行通信。
Unix/Linux中,可以使用mkfifo和mknod来创建FIFO,原型如下:
FIFO的实例如下:
如果指定了O_NONBLOCK标志,则只读open立即返回;同样只写open出错返回-1,其errno值为ENXIO。
Unix/Linux中,可以使用mkfifo和mknod来创建FIFO,原型如下:
#include <sys/types.h>#include <sys/stat.h>int mkfifo(const char *pathname, mode_t mode);####include <sys/stat.h>int mknod(const char *path, mode_t mode, dev_t dev);创建了FIFO之后,就可以使用open函数来打开它(一般的IO函数都可用于FIFO: open、close、read、write等,就如同普通的文件一样)。
FIFO的实例如下:
/* writer.c */#include <fcntl.h>#include <sys/stat.h>#include <sys/types.h>#include <unistd.h>int main(){ int fd; char * myfifo = "/tmp/myfifo"; /* create the FIFO (named pipe) */ mkfifo(myfifo, 0666); /* write "Hi" to the FIFO */ fd = open(myfifo, O_WRONLY); write(fd, "Hi", sizeof("Hi")); close(fd); /* remove the FIFO */ unlink(myfifo); return 0;}
/* reader.c */#include <fcntl.h>#include <stdio.h>#include <sys/stat.h>#include <unistd.h>#define MAX_BUF 1024int main(){ int fd; char * myfifo = "/tmp/myfifo"; char buf[MAX_BUF]; /* open, read, and display the message from the FIFO */ fd = open(myfifo, O_RDONLY); read(fd, buf, MAX_BUF); printf("Received: %s\n", buf); close(fd); return 0;}在打开一个FIFO时,如果不指定O_NONBLOCK标志,则只读open阻塞直到某个进程以写方式打开FIFO;同样,只写open阻塞直到其它进程以读方式打开FIFO。
如果指定了O_NONBLOCK标志,则只读open立即返回;同样只写open出错返回-1,其errno值为ENXIO。
0 0
- Unix/Linux进程间通信——FIFO
- UNIX/Linux进程间通信IPC系列(三)FIFO
- UNIX进程间的通信 FIFO
- Linux进程间通信——有名管道 FIFO 详解
- linux 进程间通信 FIFO
- 《unix高级环境编程》进程间通信——管道和FIFO
- 《unix高级环境编程》进程间通信——管道和FIFO
- 进程间通信——FIFO
- Linux进程通信 FIFO
- 【UNIX】什么是进程间FIFO通信以及信号通信
- Linux进程间的通信——有名管道fifo与守护进程deamon
- Linux进程间通信: FIFO(1)
- Linux进程间通信: FIFO(2)
- linux C-FIFO(进程间通信)
- Linux进程间通信-FIFO管道
- 【Linux】进程间通信-命名管道FIFO
- Linux进程间通信方式----FIFO
- linux进程间通信之FIFO
- volatile在java server模式和client模式下的不同(主内存和工作内存)
- 第一次调用微信官方的Demo应该怎样才能运行成功
- android中图片的三级cache策略(内存、文件、网络)之三:文件缓存策略
- websphere 与 tomcat 关于java获取 jndi区别
- IOS百度地图开发系列-百度地图不能正常显示
- Unix/Linux进程间通信——FIFO
- 辞职的时候,如果老板挽留你,你会怎么办呢?
- SunShafts 阳光射线特效(也称之天空光,上帝射线)
- php相对目录比较
- Android如何确定Activity控件渲染完成
- TBB(Intel Threading Building Blocks)学习笔记
- 提高SCADA系统信息安全(一)
- Unskilled Attackers Pester Real Security Folks
- 正则表达式学习