【linuxC】
玛丽奥ZJY
这个作者很懒,什么都没留下…
展开
-
Linux信号编程实践(三) 信号在内核中的表示(sigaction&sigqueue)
信号在内核中的表示 实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。信号在内核中的表示可以看作是这样的:1)blo...转载 2018-05-16 22:42:24 · 308 阅读 · 0 评论 -
Linux信号编程实践(二) 信号发送函数和可重入函数
在早期的UNIX中信号是不可靠的,不可靠在这里指的是:信号可能丢失,一个信号发生了,但进程却可能一直不知道这一点。现在Linux 在SIGRTMIN实时信号之前的都叫不可靠信号,这里的不可靠主要是不支持信号队列,就是当多个信号发生在进程中的时候(收到信号的速度超过进程处理的速度的时候),这些没来的及处理的信号就会被丢掉,仅仅留下一个信号。可靠信号是多个信号发送到进程的时候(收到信号的速度超...转载 2018-05-16 17:52:52 · 613 阅读 · 0 评论 -
Linux信号编程实践(一) 信号概述
中断 中断是系统对于异步事件的响应, 进程执行代码的过程中可以随时被打断,然后去执行异常处理程序; 计算机系统的中断场景:中断源发出中断信号 -> CPU判断中断是否屏蔽以及保护现场 -> CPU(查询中断向量表, 找到中断服务程序的入口地址)执行中断处理程序 ->(处理完中断之后) ->恢复现场,继续执行原来的任务中断分类硬件中断(外部中断) 外部中断是指由...转载 2018-05-16 16:49:02 · 994 阅读 · 0 评论 -
Linux进程间通信(IPC)编程实践(二) FIFO命名管道
在前一篇文章中,我们讲解了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来解决不相关进程间的通信问题。什么是命名管道 命名管道也被称为FIFO文件,它是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但是它的行为却和之前所讲的...转载 2018-05-14 17:29:28 · 161 阅读 · 0 评论 -
Linux进程间通信(IPC)编程实践(一) 基本概念和匿名管道
进程间通信至少可以通过传送打开文件来实现,不同的进程通过一个或多个文件来传递信息,事实上,在很多应用系统里,都使用了这种方法。但一般说来, 进程间通信(IPC:InterProcess Communication)不包括这种似乎比较低级的通信方法。Unix系统中实现进程间通信的方法很多,而且不幸的是,极少方法能在所有的Unix系 统中进行移植(唯一一种是半双工的管道,这也是最原始的一种通信方式)...转载 2018-05-14 16:56:45 · 166 阅读 · 0 评论 -
Linux下编程------文件与IO(三) 文件共享和fcntl函数
文件共享一个进程打开了两个文件文件表条目(file-table-entry): 1.文件状态标志(file-status-flags): 读/写/追加/同步/非阻塞等; 2.当前文件偏移量 3.v节点指针[cpp] view plaincopy//验证 int main(int argc, char *argv[]) { int fd1 = open("test.txt"...转载 2018-05-14 16:27:25 · 174 阅读 · 0 评论 -
Linux下编程-----文件与IO(二)stat函数
功能:获取文件元数据[cpp] view plaincopy#include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int stat(const char *path, struct stat *buf); int fstat(int fd, struct stat *buf); ...转载 2018-05-14 15:09:09 · 282 阅读 · 0 评论 -
Linux下编程-----文件与IO(一)基本API
I/O是什么输入/输出是内存和外设之间拷贝数据的过程: 设备->内存: 输入操作 内存->设备: 输出操作 高级I/O: ANSI C提供的标准I/O库函数成为高级I/O, 也称为带缓冲的I/O; 低级I/O: Linux 提供的系统调用, 通常也称为不带缓冲的I/O;文件描述符 在linux系统中打开文件就会获得文件描述符,它是个很小的正整数。每个进程在PCB(Proces...转载 2018-05-14 14:50:02 · 212 阅读 · 0 评论 -
Linux进程理解与实践(五)细谈守护进程
一. 守护进程及其特性 守护进程最重要的特性是后台运行。在这一点上DOS下的常驻内存程序TSR与之相似。其次,守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的父进程(特别是shell)中继承下来的。最后,守护进程的启动方式有其特殊之处。它可以在Linux系统启动时从启动脚本/etc/r...转载 2018-05-18 16:31:11 · 184 阅读 · 0 评论 -
Linux进程理解与实践(四)wait函数处理僵尸进程
Wait的背景 当子进程退出的时候,内核会向父进程发送SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止) 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态。 父进程查询子进程的退出状态可以用wait/waitpid函数[cpp] view plain copy#include ...转载 2018-05-18 15:57:05 · 1219 阅读 · 0 评论 -
Linux进程理解与实践(三)进程终止函数和exec函数族的使用
进程的几种终止方式(Termination)(1)正常退出 从main函数返回[return] 调用exit 调用_exit或者_Exit 最后一个线程从其启动处返回 从最后一个线程调用pthread_exit (最后两点见后面博客)(2)异常退出 调用abort 产生SIGABOUT信号 由信号终止 Ctrl+C [SIGINT] 最后一个线程对取消请求做出...转载 2018-05-18 14:50:09 · 535 阅读 · 0 评论 -
Linux进程理解与实践(二)僵尸&孤儿进程 和文件共享
孤儿进程与僵尸进程孤儿进程: 如果父进程先退出,子进程还没退出那么子进程的父进程将变为init进程。(注:任何一个进程都必须有父进程)[cpp] view plain copy#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <unistd.h> in...转载 2018-05-18 14:27:40 · 149 阅读 · 0 评论 -
Linux进程理解与实践(一)基本概念和编程概述(fork,vfork,cow)
进程 and 程序什么是程序? 程序是完成特定任务的一系列指令集合。什么是进程? [1]从用户的角度来看:进程是程序的一次执行过程 [2]从操作系统的核心来看:进程是操作系统分配的内存、CPU时间片等资源的基本单位。 [3]进程是资源分配的最小单位 [4]每一个进程都有自己独立的地址空间与执行状态。 [5]像UNIX这样的多任务操作系统能够让许多程序同时运行,每一个运行着的程序就构...转载 2018-05-18 14:16:06 · 898 阅读 · 0 评论 -
字符编码:ANSI和ASCII区别、Unicode和UTF-8区别
ANSI和ASCII区别 ANSI码(American National Standards Institute) 美国国家标准学会的标准码 ASCII码(America Standard Code for Information Interchange)美国信息交换标准码 是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标...转载 2018-09-07 10:32:41 · 407 阅读 · 1 评论