随笔分类 -  Linux C dev

摘要:本文介绍如何使用 C 语言创建 Linux 系统中 SysV 风格的 daemon 程序。注意:这是一种旧式的 daemon 程序写法,进入 systemd 时代后是不需要通过这样的方式创建 daemon 程序的。 本文的演示环境为 ubuntu 18.04。 创建 daemon 程序的流程 通过前 阅读全文
posted @ 2020-04-17 08:32 sparkdev 阅读(1906) 评论(1) 推荐(2) 编辑
摘要:管道(pipe)是进程间通信的一种实现方式。在 Linux 系统中,管道本质上是一种特殊的文件,它的主要用途是实现进程间的通信。文中演示所用环境为 Ubuntu 18.04 desktop。 在 shell 中执行下面的命令: echo 命令的输出通过管道作为了 cat 命令的输入。这里面的具体操作 阅读全文
posted @ 2019-06-11 13:08 sparkdev 阅读(3202) 评论(0) 推荐(0) 编辑
摘要:消息队列和共享内存、信号量一样,同属 System V IPC 通信机制。消息队列是一系列连续排列的消息,保存在内核中,通过消息队列的引用标识符来访问。使用消息队列的好处是对每个消息指定了特定消息类型,接收消息的进程可以请求接收下一条消息,也可以请求接收下一条特定类型的消息。 相关数据结构 与其他两 阅读全文
posted @ 2018-04-06 09:03 sparkdev 阅读(13999) 评论(3) 推荐(5) 编辑
摘要:本文继《System V IPC 之共享内存》之后接着介绍 System V IPC 的信号量编程。在开始正式的内容前让我们先概要的了解一下 Linux 中信号量的分类。 信号量的分类 在学习 IPC 信号量之前,让我们先来了解一下 Linux 提供两类信号量: 内核信号量,由内核控制路径使用。 用 阅读全文
posted @ 2018-04-03 08:55 sparkdev 阅读(23604) 评论(2) 推荐(6) 编辑
摘要:IPC 是进程间通信(Interprocess Communication)的缩写,通常指允许用户态进程执行系列操作的一组机制: 通过信号量与其他进程进行同步 向其他进程发送消息或者从其他进程接收消息 和其他进程共享一段内存区 System V IPC 最初是在一个名为 "Columbus Unix 阅读全文
posted @ 2018-03-29 08:34 sparkdev 阅读(17797) 评论(2) 推荐(5) 编辑
摘要:Unix domain socket 又叫 IPC(inter-process communication 进程间通信) socket,用于实现同一主机上的进程间通信。socket 原本是为网络通讯设计的,但后来在 socket 的框架上发展出一种 IPC 机制,就是 UNIX domain soc 阅读全文
posted @ 2018-01-27 17:40 sparkdev 阅读(92498) 评论(2) 推荐(14) 编辑
摘要:在 TCP/IP 协议中,"IP地址 + TCP或UDP端口号" 可以唯一标识网络通讯中的一个进程,"IP地址+端口号" 就称为 socket。本文以一个简单的 TCP 协议为例,介绍如何创建基于 TCP 协议的网络程序。 TCP 协议通讯流程 下图描述了 TCP 协议的通讯流程(此图来自互联网): 阅读全文
posted @ 2018-01-24 13:15 sparkdev 阅读(9816) 评论(3) 推荐(7) 编辑
摘要:Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态。例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止。如果子进程已经终止,那么,它的终止代号将告诉父进程这个任务是否已成功地完成。为了遵循这些设计原则,不允许 L 阅读全文
posted @ 2018-01-15 08:49 sparkdev 阅读(8361) 评论(1) 推荐(4) 编辑
摘要:Linux 操作系统紧紧依赖进程创建来满足用户的需求。例如,只要用户输入一条命令,shell 进程就创建一个新进程,新进程运行 shell 的另一个拷贝并执行用户输入的命令。Linux 系统中通过 fork/vfork 系统调用来创建新进程。本文将介绍如何使用 fork/vfork 系统调用来创建新 阅读全文
posted @ 2018-01-11 08:47 sparkdev 阅读(39576) 评论(4) 推荐(10) 编辑

点击右上角即可分享
微信分享提示