概念在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程。 但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程, 因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程, 看有没有哪个进程是刚刚结束的这个进...
分类:
系统相关 时间:
2015-08-05 17:57:45
阅读次数:
187
嵌入式 探讨父子线程、进程终止顺序不同产生的结果 Linux下编程,线程、进程退出顺序问题纷纷扰扰,如果父进程/线程先于子进程/线程终止,系统会做什么处理呢?反之,如果子进程/线程先于父进程/线 程终止,系统又会做什么处理呢?下面是我个人平时在笔记上做的一些象征性的总结,如果有疑问之处,大可提出,我...
分类:
编程语言 时间:
2015-08-03 20:50:18
阅读次数:
176
信号掩码 – 被阻塞的信号集
每个进程都有一个用来描述哪些信号传送来将被阻塞的信号集,如果某种信号在某个进程的阻塞信号集中,则传送到该进程的此种信号将会被阻塞。当前被进程阻塞的信号集也叫信号掩码,类型为sigset_t。每个进程都有自己的信号掩码,且创建子进程时,子进程会继承父进程的信号掩码。信号阻塞和忽略的区别
阻塞的概念与忽略信号是不同的:操作系统在信号被进程解除阻塞之前不会将信号传递出去,...
分类:
系统相关 时间:
2015-08-03 16:54:50
阅读次数:
143
管道通信什么是管道?
管道是单向的、先进先出的,他把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。
管道创建
管道包括无名管道和有名管道两种,前者用于父进程和子进程间的通讯,后者可用于同一系统中的任意两个进程间的通讯。
无名管道由pipe()函数创建:
int pipe(int filedis[...
分类:
系统相关 时间:
2015-08-01 15:46:38
阅读次数:
205
1、进程基本概念:进程是程序的一次执行, 是系统进程资源分配和调度的基本单位。
2、进程三态:执行状态、就绪状态、阻塞状态;三态转换规则,就绪状态的进程由于调度进程执行状态,执行状态由于时间片用完而进入就绪状态,由于I/O请求而进入阻塞状态,I/O完成后进入就绪状态。
创建完成直接进入就绪状态,等待处理机调度。
3、挂起状态引入原因:1)终端用户请求,2)父进程请求,3)负荷调节需要,4)操...
分类:
其他好文 时间:
2015-08-01 12:59:57
阅读次数:
122
获取ID
#include
#include
。pid_t getpid(void)
获取本进程ID
。pid_t gettppid(void)
获取父进程ID
eg:
#include
#include
#include
int main (void)
{
printf("PID = %d\n", getpid());
printf("PPID...
分类:
系统相关 时间:
2015-07-31 18:24:46
阅读次数:
153
分析Linux内核创建一个新进程的过程进程描述
进程描述符(task_struct)用来描述进程的数据结构,可以理解为进程的属性。比如进程的状态、进程的标识(PID)等,都被封装在了进程描述符这个数据结构中,该数据结构被定义为task_struct
进程控制块(PCB)是操作系统核心中一种数据结构,主要表示进程状态。
进程状态fork()fork()在父、子进程各返回一次。在父进程中返回子进程的 p...
分类:
系统相关 时间:
2015-07-29 14:09:04
阅读次数:
245
新进程的执行源于以下前提:
- dup_task_struct中为其分配了新的堆栈
- 调用了sched_fork,将其置为TASK_RUNNING
- copy_thread中将父进程的寄存器上下文复制给子进程,保证了父子进程的堆栈信息是一致的
- 将ret_from_fork的地址设置为eip寄存器的值
最终子进程从ret_from_fork开始执行...
分类:
系统相关 时间:
2015-07-29 14:08:57
阅读次数:
198
服务器,客户端都是父进程、子进程分别负责发送、接收字符串。 另外使用了信号函数来发送和接收处理信号,比如当子进程结束时,传递一个信号给父进程,然后父进程会执行信号处理函数。服务器端: 1 #include 2 #include 3 #include 4 #include 5 #include ...
分类:
其他好文 时间:
2015-07-29 00:47:19
阅读次数:
123
前几篇博文中我已经介绍过进程的创建以及一些基本知识,这里就不再赘述,本篇博文我主要会涉及进程的终止细节以及父进程对子进程的监控,还有函数组exec()1.进程的终止(1)_exec()和exit()进程终止分俩中情况,一种是收到某种信号异常终止,另一种是调用_exit()正常退出#include
void _exit(int status);参数status保存了进程的终止状态,...
分类:
系统相关 时间:
2015-07-28 13:12:09
阅读次数:
173