进程间通信之——信号复现(14,26,27)(六)
摘要:14) SIGALRM 26) SIGVTALRM 27) SIGPROF 这几个信号要放在一起说,因为他们都属于闹钟信号,首先说说SIGALRM信号,man手册上说它是由alarm函数产生的,先介绍一个这个函数: 14.1 alarm 函数原型 unsigned int alarm(unsigne
阅读全文
进程间通信之——信号复现(11~13)(五)
摘要:11) SIGSEGV 产生该信号的原因是对地址的非法访问,意思就是访问了你不该访问的地方,也是在实际工作中遇到的段错误最可能的原因,比如:访问不知道从哪里弄过来的指针、访问空指针,数组越界等等,测试代码如下: 1 /** 2 * filename: signal_11.c 3 * author:
阅读全文
进程间通信之——信号复现(8~10)(四)
摘要:8) SIGFPE 该信号由浮点异常导致,实际上当除数为0时就会导致该信号,无论被除数是什么类型的,只要除数是0,就会发出该信号。测试代码如下: 1 /** 2 * filename: signal_8.c 3 * author: Suzkfly 4 * date: 2021-02-16 5 * p
阅读全文
进程间通信之——信号复现(6~7)(三)
摘要:6) SIGABRT 1. man手册上说是由abort函数产生的,先介绍一下abort函数: 函数原型 void abort(void); 头文件 stdlib.h 功能 给自己发送SIGABRT信号 参数 无 返回值 空 2. 事实上不止是abort函数能产生SIGABRT信号,assert也可
阅读全文
进程间通信之——信号复现(1~5)(二)
摘要:普通信号的复现 1)SIGHUP 该信号在终端挂起或控制进程终止时发出,那可以通过在终端中运行进程,然后关闭终端来实现。 代码如下: 1 /** 2 * filename: signal_1.c 3 * author: Suzkfly 4 * date: 2021-02-15 5 * platfor
阅读全文
进程间通信之——信号(一)
摘要:关于linux信号的知识点,我找到一篇博客写的非常好:https://www.cnblogs.com/hoys/archive/2012/08/19/2646377.html 本篇博客主要是为了加深自己的理解,并且在上篇博客的基础上做一些扩充,有可能会有说的不对的地方。 具体与信号相关的资料可以用输
阅读全文
返回值是函数指针的函数
摘要:随便写一个函数声明:int func(int a, int b); 该函数是一个返回值为int类型,具有两个int类型变量的函数。如果要定义一个这样的函数指针应该怎么定义呢,一般有下列两种方法: 1. 直接定义 int (* p_func)(int a, int b); 实际上一个函数指针不关心它的
阅读全文
进程间通信之——有名管道
摘要:1、概述 无名管道只能在具有亲缘关系的进程中使用,而有名管道可以在互不相关的两个进程间使用。有名管道将管道以文件的方式存储在指定路径中,使用ls -l可以看到第一个字符是‘p’,表示这是一个管道文件。文件操作用标准IO,即open,read,write,close。 2、函数介绍 2.1 创建管道文
阅读全文
进程间通信之——无名管道
摘要:1、概述 无名管道用于有亲缘关系的进程间的通信,管道字如其名,它就像在两个进程之间铺设了一条管道,进程通过管道进行数据交互。无名管道是没有名字的,它由pipe或者pipe2函数创建,与之对应的是有名管道,有名管道在下一节介绍。 以pipe函数为例,其函数原型为int pipe(int pipefd[
阅读全文
保护临界资源——互斥锁
摘要:1、概述 互斥锁通常用在多线程中,用于保护临界资源。什么是临界资源?我的理解就是有可能被多个线程同时占用的资源,比如线程1要使用一个全局变量的时候,这时调度到了线程2,线程2改变了这个全局变量的值,这时线程1再去使用这个全局变量的时候就可能出问题。举个现实生活中的例子,A要用打印机打印很多资料,B也
阅读全文