易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux fork()函数学习

    在 UNIX 系统中,用户创建一个新进程的唯一方法就是调用系统调用 fork。调 用 fork 的进程称为父进程,而新创建的进程叫做子进程。系统调用的语法格式:
    pid = fork();
    在从系统调用 fork 中返回时,两个进程除了返回值 pid 不同外,具有完全一样的用户级上下文。在子进程中,pid 的值为零。在系统启动时由核心内 部地创建的进程0是唯一不通过系统调用 fork 而创建的进程。
    核心为系统调用 fork 完成下列操作:
为新进程在进程表中分配一个空项。
为子进程赋一个唯一的进程标识号 (PID)。
做一个父进程上下文的逻辑副本。由于进程的某些部分,如正文区,可能被几个 进程所共享,所以核心有时只要增加某个区的引用数即可,而不是真的将该区拷贝到一个 新的内存物理区。
增加与该进程相关联的文件表和索引节点表的引用数。
对父进程返回子进程的进程号,对子进程返回零。
    理解系统调用 fork 的实现是十分重要的,因为子进程就象从天而降一样地开始 它的执行序列。
    下面是系统调用 fork 的算法。核心首先确信有足够的资源来成功完成 fork。 如果资源不满足要求,则系统调用 fork 失败。如果资源满足要求,核心在进程 表中找一个空项,并开始构造子进程的上下文。
算法:fork
输入:无
输出:对父进程是子进程的 PID
  对子进程是0
{
检查可用的核心资源
取一个空闲的进程表项和唯一的 PID 号
检查用户没有过多的运行进程
将子进程的状态设置为“创建”状态
将父进程的进程表中的数据拷贝到子进程表中
当前目录的索引节点和改变的根目录(如果可以)的引用数加1
文件表中的打开文件的引用数加1
在内存中作父进程上下文的拷贝
在子进程的系统级上下文中压入虚设系统级上下文层
/* 虚设上下文层中含有使子进程能
* 识别自己的数据,并使子进程被调度时
* 从这里开始运行
*/
if (正在执行的进程是父进程) {
将子进程的状态设置为“就绪”状态
return (子进程的 PID) // 从系统到用户
}
else {
初始化计时区
return 0;
}
}
    我们来看看下面的例子。该程序说明的是经过系统调用 fork 之后,对文件的共享存取。用户调用该程序时应有两个参数,一个是已经有的文件名,另外一个是要创建的新文件名。该进程打开已有的文件,创建一个新文件,然后,假


相关文档:

Linux设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

linux 下嵌入式开发调试

 
 
调试用户程序:
主机:linux os
          eclipse + cdt + gdb +gcc交叉编译链
目标机:armlinux os
           gdbServer
通讯方式:tcp
文件传输方式:ftp, minicom, 通过nfs.
配置参考 ......

linux文件IO之整理笔记(一)

以下是个人觉得比较详细而且易于理解的几篇文章,所以把它一起贴出来做为笔记(一)、(二)、(三),也希望对过路者提供一点方便。
第3章文件I / O
3.1 引言
        本章开始讨论U N I X系统,先说明可用的文件I / O函数——打开文件、读文件、写文件等等。大多数U N I ......

Linux 进程管理

摘要:
本文讲述的时进程管理的基本概念和进程管理工具介绍;文中的重点对进程管理工具的分类介绍及应用举例,包括 ps、pgrep、top
、kill、pkill、killall、nice和renice 等工具。
http://www.linuxsir.org/main/?q=node/210
1、程序和进程;
程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。什么是进程 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号