linux mkfifo 函数,mkfifo - Linux C 函数 使用手册
mkfifo(建立具名管道)
相关函数 pipe,popen,open,umask
表头文件 #include
#include
定义函数 int mkfifo(const char * pathname,mode_t mode);
函数说明 mkfifo()会依参数pathname建立特殊的FIFO文件,该文件必须不存
在,而参数mode为该文件的权限(mode%~umask),因此umask值也
会影响到FIFO文件的权限。Mkfifo()建立的FIFO文件其他进程都可
以用读写一般文件的方式存取。当使用open()来打开FIFO文件时,
O_NONBLOCK旗标会有影响
1、当使用O_NONBLOCK 旗标时,打开FIFO 文件来读取的操作会立刻
返回,但是若还没有其他进程打开FIFO 文件来读取,则写入的操作
会返回ENXIO 错误代码。
2、没有使用O_NONBLOCK 旗标时,打开FIFO 来读取的操作会等到其
他进程打开FIFO文件来写入才正常返回。同样地,打开FIFO文件来
写入的操作会等到其他进程打开FIFO 文件来读取后才正常返回。
返回值 若成功则返回0,否则返回-1,错误原因存于errno中。
错误代码 EACCESS 参数pathname所指定的目录路径无可执行的权限
EEXIST 参数pathname所指定的文件已存在。
ENAMETOOLONG 参数pathname的路径名称太长。
ENOENT 参数pathname包含的目录不存在
ENOSPC 文件系统的剩余空间不足
ENOTDIR 参数pathname路径中的目录存在但却非真正的目录。
EROFS 参数pathname指定的文件存在于只读文件系统内。
范例:
#include
#include
#include
main()
{
char buffer[80];
int fd;
unlink(FIFO);
mkfifo(FIFO,0666);
if(fork()>0){
char s[ ] = “hello!\n”;
fd = open (FIFO,O_WRONLY);
write(fd,s,sizeof(s));
close(fd);
}
else{
fd= open(FIFO,O_RDONLY);
read(fd,buffer,80);
printf(“%s”,buffer);
close(fd);
}
}
执行 hello!
linux mkfifo 函数,mkfifo - Linux C 函数 使用手册相关推荐
- linux下的mkfifo 命令
mkfifo [ -m Mode ] File - 描述 根据指定的顺序,mkfifo 命令创建由 File 参数指定的 FIFO 特别文件.如果没有指定 -m Mode 标志,则 FIFO 文件的文 ...
- linux有名管道 mkfifo,有名管道mkfifo
int mkfifo(const char *pathname, mode_t mode); int mknod(const char *pathname, mode_t mode, dev_t de ...
- linux使用shell函数扩充命令,Linux Shell系列教程之(十五) Shell函数简介 | Linux大学...
摘要 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高. 高级语言都支持函数,Shell也不例外.今天就为大家介绍下Shell中函数相关用法. 函数可以将一个复杂功能划 ...
- linux 打印函数宏,linux内核中的嵌入式汇编宏函数
在看linux内核代码时,常会遇到诸如:static inline _syscall0(int,fork)这样的函数.经查阅资料,发现该函数是嵌入式汇编宏函数. linux内核提供了7个非常有用的宏定 ...
- linux内核提供的内存操作函数
1.kmalloc()/kfree() static __always_inline void *kmalloc(size_t size, gfp_t flags) 内 ...
- Linux中assert头文件,linux系统下如何使用assert函数
linux系统下如何使用assert函数 只要看得懂程序的人都知道assert,在Windows下使用VC编写,使用assert之后,只需在IDE中设置为debug版或者是release版,编译器就会 ...
- linux的阻塞waitqueue,Linux阻塞控制 wait_event与wait_event_interruptible函数详解
Linux阻塞控制 wait_event与wait_event_interruptible函数详解 最近研究了一下linux驱动对进程的阻塞与非阻塞的控制,感觉linux对进程的控制真的是牛逼,各种进 ...
- 【Linux 内核 内存管理】Linux 内核内存布局 ③ ( Linux 内核 动态分配内存 系统接口函数 | 统计输出 vmalloc 分配的内存 )
文章目录 一.Linux 内核 动态分配内存 系统接口函数 二.统计输出 vmalloc 分配的内存 一.Linux 内核 动态分配内存 系统接口函数 Linux 内核 " 动态分配内存 & ...
- 【Linux 内核】调度器 ⑥ ( task_woken 函数 | set_cpus_allowed 函数 | rq_online 函数 | rq_offline 函数 )
文章目录 一.task_woken 函数 ( 唤醒阻塞进程 ) 二.set_cpus_allowed 函数 ( 修改进程在 CPU 中的亲和力 ) 三.rq_online 函数 ( 启动执行队列 ) ...
- 【Linux 内核】进程管理 ( 进程状态 | 进程创建 | 进程终止 | 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 )
文章目录 一.进程状态 二.进程创建 三.进程终止 ( 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 ) 一.进程状态 Linux 进 ...
最新文章
- 如何在Matlab中获取函数参数的数目?
- python文件目录操作方法_Python常用的文件及文件路径、目录操作方法汇总介绍
- 深入理解Java内存模型(七)——总结
- MarshalByRefObject 的DOME代码
- C与C++中const差别
- Windows下的Makefile
- Redis 持久化(学习笔记五)
- 天津大学计算机专硕_「20考研」计算机考研专业课变动汇总
- python零基础入门五小时教学_五小时轻松入门Python
- redis 集群常用命令
- google浏览器安装gliffy 安装方法及插件
- java gps解析_GPS经纬度可以用来Java解析
- win11微软拼音输入法失效、没有候选框、不显示语言栏的问题
- 计算机课ppt插入图片,ppt2010官方基础教程:插入照片-powerpoint技巧-电脑技巧收藏家...
- 谷歌(Google)浏览器显示内存不足,无法打开此网页
- 使用ORC识别图片的文字
- 分列:将excel单元格的内容拆分为两列
- 时间序列分析教程(一):基本性质
- 信息时代的生活到底给我们带来了什么?
- uniapp之unipush安卓app信息推送
热门文章
- 在Microsoft Excel中如何快速合并表格
- 微信公众号开发:获取access_tokentoken失败,40164错误
- 低价不限流量套餐是运营商激烈竞争的产物
- 关于对Match-Sea,第一次做完的游戏进行反思
- 浅谈XML语言(一)
- 5G网络实现自动驾驶车联网——第二篇:5G网络内网穿透
- 【智能春联】生成海报基于百度云接口实现
- [android基础]《疯狂android讲义》重点整理(2)
- conda 安装opencv
- python用8g还是16g内存好_请问电脑内存是买8g的好还是16g的好