- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 system V进程间通信-消息队列
Linux继承了system V提供的3种通信方式,分别是消息队列、信号量和共享内存。11.1system V IPC基础Linux继承了system V提供的3种通信方式,分别是消息队列、信号量和共享内存。和文件一样,IPC在使用前必须创建,每种IPC都有特定的生产者、所有者和访问权限。使用ipcs可以查看当前系统正在使用的IPC工具。------ Message Queues --------key msqid owner perms used-byt
2020-08-26 22:11:38 454
原创 linux异步信号处理机制2
10.2安装信号与捕获信号10.2.1信号处理办法当进程收到操作系统一个信号,可以采用下面处理方法:1.忽略此信号。大多数信号都可以用这种方式处理,但SIGKILL和SIGSTOP不能被忽略。2.自定义捕捉信号方式。当某信号到来时,执行用户自定义操作,这要求该进程先安装该信号,即通知内核在某种信号发生时调用一个特殊函数。3.执行系统默认操作。Linux对任何一个信号都规定了一个默认操作。10.2.2signal安装信号程序要求接收到某信号时执行用户的特殊操作,需要安装信号处理函数。typed
2020-08-23 17:40:27 322
原创 Linux异步信号处理机制1
10.1Linux常见信号处理10.1.1信号与中断Linux信号是一种进程间异步通信机制,在实现上是一种软中断。信号可以导致一个正在运行的进程被异步打断,转而处理一个突发事件。Linux在/usr/include/asm/signal.h中详细的定义了信号的信号值。➜ _10_SIGNALS cat /usr/include/asm/signal.h 。。。#define SIGHUP 1#define SIGINT 2#define SIGQUIT 3#define SI
2020-08-21 16:43:37 339
原创 进程间通信-有名管道(FIFO)
9.2.1有名管道概念无名管道是临时的,在完成通信后自动消息,因为文件描述符只能在某个进程中可见,因此被广泛用于具有亲缘关系的进程间通信,采用的方法是先创建管道,再创建进程,使子进程继承父进程创建的管道文件描述符。有名管道FIFO有效克服了这一问题,它依赖于文件系统,是一个存在的特殊文件,实现不同进程对文件系统下的某个文件访问是非常方便实现的。因此,FIFO可以在同主机任意进程间实现通信。有名管道和普通文件一样具有磁盘存放路径、文件权限和其他属性;但是,有名管道和普通文件又有区别,有名管道并没有在磁盘
2020-08-20 10:44:27 2236
原创 进程间通信-管道(无名管道)
进程间通信的主要方式9.1进程间通信-管道9.1.1无名管道默认情况下,一个进程都默认打开3个设备文件,一个标准输入设备(键盘),标准输出设备(显示器),和错误输出设备(显示器)。且默认从标准输入设备读入信息,将正确的信息写入到标准输入,将错误信息写入到标准输出。使用管道“|”可以将两个命令连接起来,从而改变标准的输入输出方式。在此shell命令应用中,rpm -qa命令(进程)的输出作为grep telnet的命令的输入,连接输入/输出的中间设备即为一个管道文件。因此,管道可以将一个命令的输出作
2020-08-19 17:16:19 669
原创 Linux进程管理与程序开发3
8.2.3回收进程用户空间资源在linux系统下,可以通过以下方式结束进程。显示的调用exit或_exit系统调用。在main函数中执行return语句。隐含的离开main函数,例如遇到main函数的“”}。进程在正常退出前都需要执行注册的退出处理函数,刷新流缓冲区等操作,然后释放进程用户空间的所有资源。而进程的控制块PCB并不在这时释放,仅调用退出函数的进程属于一个僵死进程。1.exit和return的区别函数exit用于退出进程。在正式释放资源前,将以反序的方式执行由on_exit()函数
2020-08-18 16:41:31 220
原创 Linux进程管理与程序开发2
8.2进程管理及控制8.2.1创建进程1.fork函数在Linux环境下,创建进程的主要方法是调用fork()函数。Linux下所有进程都有init(PID为1),直接或间接创建。extern __pid_t fork(void);若执行成功,在父进程中将返回在进程的PID,类型为pid_t,子进程将返回0,以区别父子进程。若执行失败,则在父进程中返回-1,错误原因储存在errno中。fork()函数调用成功后,将为子进程申请PCB和用户内存空间。子进程会复制父进程几乎所有信息,在用户空间将复
2020-08-17 16:31:16 139
原创 Linux 进程管理与程序开发1
8.1进程的环境及进程属性8.1.1程序、进程与进程资源进程是Linux系统下资源管理的基本单元,线程是Linux系统调度的基本单元。注意区分。进程资源由两部分组成:内核空间的进程资源和用户空间的进程资源。内核空间进程资源即PCB(进程控制块,通过struct task_struct来管理)相关的信息。包括进程控制块本身、打开的文件表项、当前目录、当前终端、线程基本信息。可访问内存地址空间、PID、PPID、UID、EUID等。内核通过PCB可以访问该进程的所有资源。这些资源只能通过系统调用才能访问
2020-08-16 20:17:27 167
原创 终端及串口编程
7.1.1 实际的物理串口如果使用虚拟机开发串口程序,可以使用win下文件来代替串口7.1.2 控制台终端tty1-tty6为控制台终端7.1.3 虚拟终端/dev/ptmx虚拟设备是一个字符文件,用于创建虚拟网络设备master/slave配对设备,要打开一个未使用的虚拟终端,通过调用posix_openpt(),来打开/dev/ptmx。/dev/pts虚拟设备7.2 终端属性控制终端属性包括:输入属性、输出属性、控制属性、本地属性、行路规划属性和控制字符7.2.1 读取/设置
2020-07-23 21:36:16 399
原创 普通文件、连接文件、目录文件属性管理
3.1.1 linux下的VFS虚拟文件系统Linux采用VFS来管理系统,VFS全称是Virtual File System(虚拟文件系统)。VFS是不同类型文件之上的软件粘合层,因为VFS可以无缝使用多个不同类型的文件系统。VFS的作用就是采用标准的UNIX系统调用来读写位于不同物理介质上的不同文件类型。Linux内核采用inode结构体来保存与文件相关的信息,比如访问权限,文件大小和创建时间,这些信息被称为文件的元数据。inode数据结构和内容本身是分开存放的。VFS采用的是面向对象的编程方法,
2020-07-03 10:43:30 748
原创 POSIX文件及目录管理
前言:LINUX下实现了两类对文件IO管理。POSIX标准,open,close,read,writeANSI提供的标准IO库函数上篇博客已写了关于ANCI的操作2.1 文件描述符与内核文件表项2.1.1 文件流与文件描述符的区别使用ANSI C库函数fopen打开的文件对应一个流对象;ANCI属于用户态,对应的也要操作内核,即open,close,read,write,符合POSIX标准,使用POSIX打开一个文件都会分配一个唯一的非负整数,用于标识该打开的文件,即文件描述符。注意ANS
2020-06-30 10:16:46 860
原创 ANSI C文件IO管理
ANSI C文件IO管理1.1.1 文件与流的基本概念文件:文本文件:ASCII文件二进制文件:数据按其在内存中中的形式存储数据缓冲文件操作:在用户空间自动为正在使用的文件开辟内存缓冲区非缓冲文件操作:用户手动开辟;使用缓冲机制原因:减少CPU状态的切换,即从用户态切换到内核态;待缓冲区满后,或确实需要更新的时候在调用系统将该文件一次性写入磁盘。缓冲区分为:全缓冲区、行缓冲区、无缓冲区ANSI标准C库函数用流的概念实现这一特性,也就是用流对文件进行操作1.1.2 标准流及流的主要功能
2020-06-27 21:41:54 182
研一数字视频处理实验报告四次.rar
2020-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人