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 函数 使用手册相关推荐

  1. linux下的mkfifo 命令

    mkfifo [ -m Mode ] File - 描述 根据指定的顺序,mkfifo 命令创建由 File 参数指定的 FIFO 特别文件.如果没有指定 -m Mode 标志,则 FIFO 文件的文 ...

  2. linux有名管道 mkfifo,有名管道mkfifo

    int mkfifo(const char *pathname, mode_t mode); int mknod(const char *pathname, mode_t mode, dev_t de ...

  3. linux使用shell函数扩充命令,Linux Shell系列教程之(十五) Shell函数简介 | Linux大学...

    摘要 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高. 高级语言都支持函数,Shell也不例外.今天就为大家介绍下Shell中函数相关用法. 函数可以将一个复杂功能划 ...

  4. linux 打印函数宏,linux内核中的嵌入式汇编宏函数

    在看linux内核代码时,常会遇到诸如:static inline _syscall0(int,fork)这样的函数.经查阅资料,发现该函数是嵌入式汇编宏函数. linux内核提供了7个非常有用的宏定 ...

  5. linux内核提供的内存操作函数

    1.kmalloc()/kfree()         static __always_inline void *kmalloc(size_t size, gfp_t flags)         内 ...

  6. Linux中assert头文件,linux系统下如何使用assert函数

    linux系统下如何使用assert函数 只要看得懂程序的人都知道assert,在Windows下使用VC编写,使用assert之后,只需在IDE中设置为debug版或者是release版,编译器就会 ...

  7. linux的阻塞waitqueue,Linux阻塞控制 wait_event与wait_event_interruptible函数详解

    Linux阻塞控制 wait_event与wait_event_interruptible函数详解 最近研究了一下linux驱动对进程的阻塞与非阻塞的控制,感觉linux对进程的控制真的是牛逼,各种进 ...

  8. 【Linux 内核 内存管理】Linux 内核内存布局 ③ ( Linux 内核 动态分配内存 系统接口函数 | 统计输出 vmalloc 分配的内存 )

    文章目录 一.Linux 内核 动态分配内存 系统接口函数 二.统计输出 vmalloc 分配的内存 一.Linux 内核 动态分配内存 系统接口函数 Linux 内核 " 动态分配内存 & ...

  9. 【Linux 内核】调度器 ⑥ ( task_woken 函数 | set_cpus_allowed 函数 | rq_online 函数 | rq_offline 函数 )

    文章目录 一.task_woken 函数 ( 唤醒阻塞进程 ) 二.set_cpus_allowed 函数 ( 修改进程在 CPU 中的亲和力 ) 三.rq_online 函数 ( 启动执行队列 ) ...

  10. 【Linux 内核】进程管理 ( 进程状态 | 进程创建 | 进程终止 | 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 )

    文章目录 一.进程状态 二.进程创建 三.进程终止 ( 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 ) 一.进程状态 Linux 进 ...

最新文章

  1. 如何在Matlab中获取函数参数的数目?
  2. python文件目录操作方法_Python常用的文件及文件路径、目录操作方法汇总介绍
  3. 深入理解Java内存模型(七)——总结
  4. MarshalByRefObject 的DOME代码
  5. C与C++中const差别
  6. Windows下的Makefile
  7. Redis 持久化(学习笔记五)
  8. 天津大学计算机专硕_「20考研」计算机考研专业课变动汇总
  9. python零基础入门五小时教学_五小时轻松入门Python
  10. redis 集群常用命令
  11. google浏览器安装gliffy 安装方法及插件
  12. java gps解析_GPS经纬度可以用来Java解析
  13. win11微软拼音输入法失效、没有候选框、不显示语言栏的问题
  14. 计算机课ppt插入图片,ppt2010官方基础教程:插入照片-powerpoint技巧-电脑技巧收藏家...
  15. 谷歌(Google)浏览器显示内存不足,无法打开此网页
  16. 使用ORC识别图片的文字
  17. 分列:将excel单元格的内容拆分为两列
  18. 时间序列分析教程(一):基本性质
  19. 信息时代的生活到底给我们带来了什么?
  20. uniapp之unipush安卓app信息推送

热门文章

  1. 在Microsoft Excel中如何快速合并表格
  2. 微信公众号开发:获取access_tokentoken失败,40164错误
  3. 低价不限流量套餐是运营商激烈竞争的产物
  4. 关于对Match-Sea,第一次做完的游戏进行反思
  5. 浅谈XML语言(一)
  6. 5G网络实现自动驾驶车联网——第二篇:5G网络内网穿透
  7. 【智能春联】生成海报基于百度云接口实现
  8. [android基础]《疯狂android讲义》重点整理(2)
  9. conda 安装opencv
  10. python用8g还是16g内存好_请问电脑内存是买8g的好还是16g的好