8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

上一篇笔记记录了无名管道,也就是匿名管道进行进程间通信必须满足的条件是父子进程,而本篇笔记将记录是是比无名管道通信更加便利的通信方式,也就是命名管道,命名管进程间通信没有父子进程的限制。

二.创建与删除管道文件

FIFO文件,和普通文件操作方式类似,有2种创建和删除FIFO文件的方式

2.1.调用函数

2.1.1.原型创建管道文件函数原型#include

#include

int mkfifo(const char *pathname, mode_t mode);//创建参数pathname为要创建的FIFO文件的全路径名;

参数mode为文件访问权限

如果创建成功,则返回0,否则-1。删除管道文件函数原型#include

int unlink(const char *pathname);参数pathname为要创建的FIFO文件的全路径名;

2.1.2.例子创建///

/// @file 03_1_mkfifo.cpp

/// @author AverageJoeWang([email protected])

///

#include

#include

#include

#include

#include

using std::cout;

using std::endl;

int main()

{

int ret;

ret = mkfifo("./pipe", 0666);

if(-1 == ret)

{

perror("mkfifo create failed!n");

return -1;

}else

printf("success!n");

return 0;

}删除///

/// @file 04_Orphaned.cpp

/// @author AverageJoeWang([email protected])

///

#include

#include

#include

using std::cout;

using std::endl;

int main()

{

unlink("pipe");

return 0;

}

2.2.使用命令mkfifo pipename#创建

rm pipename#删除

2.3.测试

创建完毕之后,就可以访问FIFO文件了:#一个终端:

cat < pipe

#另一个终端:

echo “hello” > pipe

三.访问命名管道

对FIFO类型的文件的打开/关闭跟普通文件一样,都是使用open和close函数。如果打开时使用O_WRONLY选项,则打开FIFO的写入端,如果使用O_RDONLY选项,则打开FIFO的读取端,写入端和读取端都可以被几个进程同时打开。有四种打开管道的方式open(const char *path, O_RDONLY);//1

open(const char *path, O_RDONLY | O_NONBLOCK);//2

open(const char *path, O_WRONLY);//3

open(const char *path, O_WRONLY | O_NONBLOCK);//4

在open函数的调用的第二个参数中,选项O_NONBLOCK表示非阻塞,加上这个选项后,表示open调用是非阻塞的,如果没有这个选项,则表示open调用是阻塞的。

阻塞是对于以只读方式(O_RDONLY)打开的FIFO文件,如果open调用是阻塞的(即第二个参数为O_RDONLY),除非有一个进程以写方式打开同一个FIFO,否则它不会返回;如果open调用是非阻塞的的(即第二个参数为O_RDONLY | O_NONBLOCK),则即使没有其他进程以写方式打开同一个FIFO文件,open调用将成功并立即返回。

对于以只写方式(O_WRONLY)打开的FIFO文件,如果open调用是阻塞的(即第二个参数为O_WRONLY),open调用将被阻塞,直到有一个进程以只读方式打开同一个FIFO文件为止;如果open调用是非阻塞的(即第二个参数为O_WRONLY | O_NONBLOCK),open总会立即返回,但如果没有其他进程以只读方式打开同一个FIFO文件,open调用将返回-1,并且FIFO也不会被打开。

四.使用FIFO实现进程间的通信

接下来使用一个例子来说明使用fifo进行进程间通信首先执行mkfifo pipewrite.cpp文件///

/// @file 03_2_write_pipe.cpp

/// @author AverageJoeWang([email protected])

///

#include

#include

#include

#include

#include

#include

#include

#include

using std::cout;

using std::endl;

int main()

{

int fdFifo = open("pipe", O_WRONLY);//打开一个管道文件,返回一个文件操作符

if(-1 == fdFifo)

{

perror("open failed");

return -1;

}

int ret = write(fdFifo, "hello", 6);//向管道写入内容

if(-1 == ret)

{

perror("write pipe failed!");

return -1;

}

close(fdFifo);//关闭管道

return 0;

}read.cpp文件///

/// @file 03_2_read_pipe.cpp

/// @author AverageJoeWang([email protected])

///

#include

#include

#include

#include

#include

#include

#include

using std::cout;

using std::endl;

int main()

{

int fdFifo = open("pipe", O_RDONLY);//打开管道文件,返回一个文件描述符

if(fdFifo == -1)

{

perror("open failed !");

return -1;

}

char buf[32] = {'

linux进程间命名管道,Linux进程间通信相关推荐

  1. linux 进程间读写锁,Linux系统编程—进程间同步

    我们知道,线程间同步有多种方式,比如:信号量.互斥量.读写锁,等等.那进程间如何实现同步呢?本文介绍两种方式:互斥量和文件锁. ##互斥量mutex 我们已经知道了互斥量可以用于在线程间同步,但实际上 ...

  2. Linux进程通信——匿名管道、命名管道、管道的特性和共享内存

    Linux进程通信--匿名管道.命名管道.管道的特性和共享内存 一.管道 1.1 什么是管道? 1.2 匿名管道 <1> 匿名管道参数说明 <2> fork共享管道原理 < ...

  3. linux无名管道实验代码,Linux 进程间通讯之创建无名管道和读写无名管道

    Linux进程间通讯的方式: 1. 管道(pipe)和有名管道(FIFO). 2. 信号(signal) 3. 消息队列 4. 共享内存 5. 信号量 6. 套接字(socket) 管道通讯: 无名管 ...

  4. Linux多线程间通信和多进程间通信的方式

    文章目录 一.进程间的通信方式 1. 进程间通信的概念 1.1. 进程通信的目的: 1.2. Linux 进程间通信(IPC)的发展 2. 进程间通信的7种方式 2.1. 管道/匿名管道(pipe) ...

  5. linux共享内存示例,linux 进程间共享内存示例

    写入端: #include #include #include #include #include using namespace std; struct MappingDataType { int ...

  6. Linux进程间同步和通信,linux进程间的同步方法

    进程间通讯(IPC)方法主要有以下几种: 管道/FIFO/共享内存/消息队列/信号 1.管道中还有命名管道和非命名管道(即匿名管道)之分,非命名管道(即匿名管道)只能用于父子进程通讯,命名管道可用于非 ...

  7. 深刻理解 Linux 进程间七大通信(IPC)

    前言 网络编程是 Linux C/C++的面试重点,今天我就来聊一聊进程间通信的问题,文章末尾列出了参考资料,希望帮助到大家. 篇幅有点长,希望大家耐心阅读. Linux 下的进程通信手段基本上是从 ...

  8. Linux进程间通过pipe通信

    转自:http://blog.chinaunix.net/uid-26225097-id-2846652.html     wang_qiao_ying  Linux环境进程间通信_pipe(一) 2 ...

  9. msgget();msgsnd();msgrcv();msgctl(); 消息队列 Linux进程间的通信方式之消息队列

    Linux进程间的通信方式 ----消息队列. 消息队列和共享内存类似 消息队列它允许一个或多个进程向它写消息,一个或多个进程向它写读消息. 消息队列存在于系统内核中,消息的数量受系统限制. 我们来看 ...

  10. Linux 进程间通讯(IPC)方式 ------- 共享内存

    Linux 进程间通讯(IPC)方式有以下几种: 1->管道(pipe)和有名管道(fifo). 2->消息队列 3->共享内存 4->信号量 5->信号(signal) ...

最新文章

  1. Python忽略warning警告错误
  2. es_分组-分页-TransportClient实现
  3. 博士申请 | 加拿大麦吉尔大学丁俊老师招收机器学习全奖博士/硕士/实习生
  4. 在Qt Designer中使用自定义Widgets小部件
  5. Unity超级角色控制器研究(四)——地形检测
  6. RabbitMQ系列-顺序消费模式和迅速消息发送模式
  7. 爬虫中如何获取页面编码类型
  8. Android中列表动态删除item,如何删除Android ExpandableListView中某个group item的child item?...
  9. OpenCV2.2的编译及其使用
  10. 【激活函数】Mish激活函数详解
  11. Linux下磁盘分区卸载和磁盘配额
  12. 验证手机号码的JS方法
  13. 将 PDF 转换为矢量图 emf
  14. 使用 WinRAR 将bat转exe
  15. 时钟芯片AD9520
  16. 用scrapy框架爬取拉勾网招聘信息
  17. python深度学习tensorflow和fme结合,实现档案扫描件数据自动分类
  18. JavaEE学习记录Day08、09、10
  19. 论坛没落了吗?传统BBS(论坛)何去何从?
  20. 易语言 Visual Basic 6.0 (VB6)

热门文章

  1. 6.Shell 编程从入门到精通 --- 文件和文件系统
  2. 4. Firebug 调试 Js
  3. 问题:脚本之家的几个页面
  4. 几种常用 css3 选择器解释
  5. 边界安全 - CDN/DMZ/网络协议
  6. 星尘小组第六周学习笔记—如何在各类控件中输入/输出数据
  7. js右下角广告[兼容]
  8. 用shell查找某目录下的最大文件
  9. Android电池驱动【转】
  10. VBA基础知识———常用语句