1.Unix domain数据报 socket 的一般描述指出使用数据报 socket 通信是不可靠的。但对于 Unix domain socket 来说,数据包传输是在内核中发生的,并且也是可靠的。所有消息都会按序被投递且也不会发生重复。2.Unix domain socket 权限socket 文件的所有权和权限决定了哪些进程能够与这个 socket 进行通信:1.要连接一个 Unix domain 流 socket 需要在该 socket 文件上拥有写权限2.要通过一个 Unix domain 数据报 socket 发送一个数据报要在该 socket 文件上拥有写权限。此外,需要在存放 socket 路径名的所有目录上都拥有执行权限。在默认情况下,创建 socket(通过 bind()) 时会给所有者,组以及 other 用户赋予所有权限。要改变这种行为可以在调用 bind() 之前先调用 umask() 来禁用不希望赋予的权限。3.创建互联 socket 对: socketpair(int domain, int protocal, int sockfd[2])有时候让单个进程创建一对 socket 并将它们连接起来是比较有用的。这可以通过使用两个 socket() 调用和一个 bind() 调用以及对 listen(),connect(), accept()的调用来完成。socketpair() 系统调用则为这个操作过程提供了一个快捷方式。socketpair() 系统调用只能在 Unix domain 中,即 domain 参数必须被指定为 AF_UNIX.(这个约束适用于大多数实现,但却是合理的,因为这一对 socket是创建于单个系统上的。) socket 的 type 可以被指定为 SOCK_DTRAM 和 SOCK_STREAM 。protocol 参数必须为0. sockfd 数组返回了引用这2个互相连接的socket 的文件描述符。将 type 指定为 SOCK_STREAM 相当于创建了一个双向管道(也称为流管道)。每个 socket 都可以用来读取和写入,并且这2个 socket 之间每个方向上的数据信道是分开的。一般来讲,socket 对的使用方式与管道的使用方式是类似的。在调用完 socketpair() 之后,进程会使用 fork() 创建一个子进程。子进程会继承父进程的文件描述符副本,包括引用了 socket 对的描述符。因此父进程和子进程就可以使用这一对 socket 来进行 IPC 了。使用 socketpair() 创建一对 socket 与手动创建互联的 socket 这2种做法之间的一个差别在于前一对 socket 不会被绑定到任意地址上。这样就能避免一类安全问题了,因为这一对 socket 对其他进程是不可见的。4.Linux 抽象 socket 名空间所谓的抽象路径名空间是 Linux 特有的一项特性,它允许将一个 Unix domain socket 绑定到一个名字上但不会再文件系统上创建该名字。优点是:1.无需担心与文件系统中的既有名字产生冲突2.没有必要在使用完 socket 之后删除 socket 路径名。当 socket 被关闭之后自动删除这个抽象名3.无需为 socket 创建一个文件系统路径名。这对于 chroot 环境以及在不具备文件系统上的写权限时是比较有用的。要创建一个抽象绑定就需要将 sun_path 字段的第一个字节指定位 null 字节(\0)。这样就能够将抽象 socket 名字与传统 Unix domain socoket 路径名区分开来,因为传统的名字是由一个或者多个非空字节以及终止 null 字节构成的字符串。sun_path 字段的余下的字节为 socket 定义了抽象名字。在解释这个名字时需要用到全部的字节,而不是将其看成一个以 null 结尾的字符串。
虽然网络 socket 也可用于同一台主机的进程间通讯(通过 loopback 地址 127.0.0.1),但是 UNIX domain socket
用于 IPC 更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。这是因为,
IPC 机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的。
UNIX domain socket 是全双工的,API 接口语义丰富,相比其它 IPC 机制有明显的优越性

57.Linux/Unix 系统编程手册(下) -- SOCKET : Unix domain相关推荐

  1. Linux/UNIX系统编程手册gg

    Linux系统: "所见皆文件" 一个比较好的博客 一.Linux基础操作 Linux系统目录: bin:存放二进制可执行文件 boot:存放开机启动程序 dev:存放设备文件: ...

  2. linux/unix系统编程手册11-15

    title: linux/unix编程手册-11_15 date: 2018-05-27 11:53:07 categories: programming tags: tips linux/unix编 ...

  3. Linux/Unix系统编程手册 第三章:系统编程概念

    本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题. 系统调用是受控的内核入口,通过系统调用,进程可以请求内核以自己的名义去执行某些动作,比如创建子进程,执行I/O操作, ...

  4. unix系统编程c语言,关于unix系统编程的一个小问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* rlsd.c - a remote ls server - with paranoia */ #include #include #include ...

  5. Linux系统编程手册-源码的使用

    Linux系统编程手册-源码的使用 转自:http://www.cnblogs.com/pluse/p/6296992.html 第三章后续部分重点介绍了后面章节所要使用的头文件及其实现,主要如下: ...

  6. 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)

    文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...

  7. ①Linux简明系统编程(嵌入式公众号的课)---总课时12h

    10.09 注意:这个是Linux高级编程的简明教程,是Linux应用程序的开发,而不是底层程序的开发. 内容是关于操作系统和网络编程的吗? Linux简明系统编程 〇.课程思维导图 〇.会用到的头文 ...

  8. 【Linux】系统编程之文件(标准I/O库)

    目录 一.文件I/O与标准I/O的区别(open与fopen) 1.来源 2.移植性 3.适用范围 4.文件IO层次 5.缓冲 二.函数fopen.fwrite.fread.fseek.fclose ...

  9. UNIX系统编程(1)

    注:本文来自"网易"博主,仅阅读,学习 第一章:什么是系统编程  UNIX系统编程,简单的说就是"C语言+系统调用(system call)",学会了C语言再知 ...

  10. LINUX C系统编程与PYTHON中的时间模块对比

    今天看python时间模块time的时候发现和LINUX系统编程中的时间调用函数基本一样,以前刚好没有好好学习LINUX C编程的时间模块就对比进行了学习. 本文只是给出函数接口和使用方式,详细了解请 ...

最新文章

  1. leetcode-102 二叉树的层次遍历
  2. samba srver on centos-7
  3. iOS更改AppIcon
  4. 玩远程 可视对讲系统几大新兴应用分析
  5. 关于共享单车,说点什么
  6. tableau必知必会之VMware 搭建 Tableau Server for Linux 单机环境
  7. Azure中centos7设置时间为上海时间
  8. IP-guard应用攻略:如何防范外置网卡泄密
  9. (福利)中秋灯谜,猜中有奖
  10. beginnersbook C 语言示例·翻译完成 | ApacheCN
  11. mysql-python安装时EnvironmentError: mysql_config not found
  12. 341期计算机开机号总汇,◆341期谜语汇总 ◆
  13. H3C HCSE 官方培训胶片(中文) 下载
  14. Codeblocks中搭建Qt环境遇到个问题
  15. 选取销售订单开发票,控制销售订单中已开票金额
  16. Photoshop CS5软件安装教程
  17. 大数据助力证券业预判未来
  18. netDxf实现对cad文件的读取与写入
  19. OC:不会说话的汤姆猫(2014年12月)未添加音频
  20. hadoop ls命令

热门文章

  1. hibernate第一天
  2. log4j配置日志文件log4j.appender.R.File相对路径方法
  3. CSS3 新怎的伪类选择器
  4. checkbox:获取选中的checkbox
  5. button与submit
  6. ORDER BY 子句在视图、派生表、子查询等表达式中无效
  7. 图解欧洲足球五大联赛 | R爬虫可视化第五季
  8. html 获取本机ip_爬取快代理免费ip,构建自己的代理ip池,不再怕反爬(附代码)...
  9. 点击添加一行_微信接龙表格操作方法图文教程,以及微信聊天框怎么另起一行...
  10. machine learning 之 Neural Network 3