• [linux系统编程]System V IPC 信号量做进程间互斥

    时间:2022-07-30 14:48:10

    static int sem_id;int lock_db(){struct sembuf sops;sops.sem_num = 0; //操作第一个信号量sops.sem_op = -1; //对该信号量操作-1...

  • Linux系统编程(26)——守护进程

    时间:2022-07-18 04:46:08

    Linux系统启动时会启动很多系统服务进程,比如inetd,这些系统服务进程没有控制终端,不能直接和用户交互。其它进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但系统服务进程不受用户登录注销的影响,它们一直在运行着。这种进程有一个名称叫守护进程(Daemon)。下面我们用ps ax...

  • Linux系统下的多线程编程入门三

    时间:2022-07-02 22:30:36

    线程的数据处理 和进程相比,线程的最大优点之一是数据的共享性,各个进程共享父进程处沿袭的数据段,可以方便的获得、修改数据。但这也给多线程编程带来了许多问题。我们必须当心有多个不同的进程访问相同的变量。许多函数是不可重入的,即同时不能运行一个函数的多个拷贝(除非使用不同的数据段)。在函数中声明的静态变...

  • Linux系统编程——线程同步与互斥:POSIX无名信号量

    时间:2022-06-27 14:48:32

    信号量概述 信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。 编程时可根据操作信号量值的结果判断是否对公共资源具有访问的权限,当信号量值大于 0 时,则可以访问,否则将阻塞。PV 原语是对信号量的操作,一次 P 操作使信号量减1,一次 V ...

  • 【Linux系统编程】进程同步与互斥:System V 信号量

    时间:2022-06-27 14:48:26

    信号量概述 信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。 编程时可根据操作信号量值的结果判断是否对公共资源具有访问的权限,当信号量值大于 0 时,则可以访问,否则将阻塞。PV 原语是对信号量的操作,一次 P 操作使信号量减1,一次 V ...

  • linux系统编程:自己动手写一个ls命令

    时间:2022-06-23 11:17:13

    ls用于列举目录内容,要实现这个功能,毫无疑问,需要读取目录,涉及到两个api: opendir:DIR *opendir(const char *name), 传文件名,返回一个指针,指向目录序列 readdir:struct dirent *readdir(DIR *dirp), 把opendi...

  • linux 系统编程 dup(2)和dup2(2)文件重定向

    时间:2022-06-16 21:58:05

    摘自:《Linux C编程一站式学习》 使用dup和dup2系统调用,需要判断返回值,如果返回值为-1,重定向失败...

  • 【linux草鞋应用编程系列】_1_ 开篇_系统调用IO接口与标准IO接口

    时间:2022-06-08 17:55:06

    最近学习linux系统下的应用编程,参考书籍是那本称为神书的《Unix环境高级编程》,个人感觉神书不是写给草鞋看的,而是 写给大神看的,如果没有一定的基础那么看这本书可能会感到有些头重脚轻的感觉。我自己就是这样,比方说看进程间通信信号量章 节的时候,开始感觉就很迷糊,因此也就想在这里写一些文字,给和...

  • Linux系统编程(37)—— socket编程之UDP服务器与客户端

    时间:2022-06-06 20:37:38

    典型的UDP客户端/服务器通讯过程:aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgMAAAG6CAYAAACV9kV3AAAgAElEQVR4AeydBbhkxdGGO8Hd3XaxRcLizi4LgcWDBQ0WLBBIkODkxwLBHkICCS...

  • Linux系统编程(22)——响应信号

    时间:2022-05-27 14:43:46

    进程对信号的响应 进程可以通过三种方式来响应一个信号: 1、忽略信号,即对信号不做任何处理,其中,有两个信号不能忽略:SIGKILL及SIGSTOP; 2、捕捉信号。定义信号处理函数,当信号发生时,执行相应的处理函数; 3、执行缺省操作,Linux对每种信号都规定了默认操作。注意,进程对实时信号的...

  • 与信号相关的linux系统编程API

    时间:2022-05-27 14:43:34

    1. kill(pid_t pid, int sig); //给指定的进程发送sig信号   raise(int sig); //给当前进程发送sig信号2. 处理指定的信号    typedef void (*sighandler_t)(int);   sighandler_t   signal(...

  • Linux系统编程(21)——信号的产生

    时间:2022-05-27 14:43:28

    1、通过终端按键产生信号 通过上一篇我们知道了SIGINT的默认处理动作是终止进程,SIGQUIT的默认处理动作是终止进程并且Core Dump,现在我们来验证一下。   首先解释什么是Core Dump。当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部保存到磁盘上,文件名通常是core...

  • 16、【Linux系统编程】信号详解

    时间:2022-05-27 14:43:22

    信号的基本概念 每个信号都有一个编号和一个宏定义名称 ,这些宏定义可以在 signal.h 中找到。 使用kill -l命令查看系统中定义的信号列表: 1-31是普通信号; 34-64是实时信号 所有的信号都由操作系统来发! 对信号的三种处理方式 1、忽略此信号:大多数信号都可使用这种方式进行处理...

  • linux系统编程之信号(二):信号处理流程(产生、注册、注销、执行)

    时间:2022-05-27 14:43:16

        对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个阶段: 信号诞生 信号在进程中注册 信号在进程中的注销 信号处理函数执行 1    信号诞生     信号事件的发生有两个来源:硬件来源(比如我们按下了键盘或者其它硬件故障);软件来源,最常用发送...

  • 《精通Linux C编程》1.3Linux系统的常用命令-笔记

    时间:2022-05-20 08:19:38

    [toc]1.3.1了解ShellLinux常用命令的运行环境就是Shell,它是一种命令解析器,在用户和操作系统之间提供了一个交互接口。用户在命令行输入命令,然后Shell对该命令进行解析并将它作为指令代码发送给操作系统。Linux操作系统中有许多可选的Shell,每种Shell提供不同的特性和功...

  • Linux系统编程(17)——正则表达式进阶

    时间:2022-05-14 05:33:10

    C的变量和Shell脚本变量的定义和使用方法很不相同,表达能力也不相同,C的变量有各种类型,而Shell脚本变量都是字符串。同样道理,各种工具和编程语言所使用的正则表达式规范的语法并不相同,表达能力也各不相同,有的正则表达式规范引入很多扩展,能表达更复杂的模式,但各种正则表达式规范的基本概念都是相通...

  • Linux系统下Shell多线程编程的实例

    时间:2022-05-13 12:40:58

    本文一个例子展开,介绍Linux下面Shell 多线程编程的过程?为什么有了进程还需要线程呢,为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,需要的朋友可以参考下

  • [linux] C语言Linux系统编程-捕获进程信号

    时间:2022-05-10 08:07:38

    typedef void( *sighandler_t)(int);1.用typedef给类型起一个别名。2.为函数指针类型定义别名,3.函数指针(指向函数的指针)sighandler_t signal(int signum, sighandler_t handler);1.函数原型2.使用自定义的...

  • Linux系统编程(15)——shell脚本语法

    时间:2022-05-08 09:15:48

    Shell字符串字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。单引号str='this is a string'单引号字符串的限制:单引号里的任何字符都会原样输出,单引号字符串...

  • Linux系统编程(24)——信号的生命周期

    时间:2022-05-05 16:16:07

      信号生命周期为从信号发送到信号处理函数的执行完毕。 对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生;信号在进程中注册完毕;信号在进程中的注销完毕;信号处理函数执行完毕。相邻两个事件的时间间隔构成信号生命周期的...