linux中fork()函数详解 一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统....
分类:
系统相关 时间:
2014-10-27 10:39:18
阅读次数:
298
在bash shell中,source、exec以及sh都可以用来执行shell script,但是它们的差别在哪里呢?sh:父进程会fork一个子进程,shell script在子进程中执行source:在原进程中执行,不会fork子进程exec:在原进程中执行,但是同时会终止原进程注:使用exp...
分类:
其他好文 时间:
2014-10-26 18:11:47
阅读次数:
207
作者:zhanhailiang 日期:2014-10-26
linux程序加载运态库流程简介
linux从程序(program或对象)变成进程(process或进程),简单说来需要经过三步:
fork进程,在内核创建进程相关内核项,加载进程可执行文件;
查找依赖的.so,逐一加载映射虚拟地址;
初始化程序变量;
如下例通过strace查看pwd命...
分类:
系统相关 时间:
2014-10-26 17:00:35
阅读次数:
359
跌跌撞撞,unix也看到了进程管理,顿时觉得高大上了。然而面对第一个系统调用fork,这英语发音实在是蹩脚,差点就读成~~。
在unix里面,对于任何一个进程,都有一个唯一表示的进程ID(pid)当然除了进程ID这个标识之外还有很多其他属性:父进程ID(ppid),进程实际用户ID,进程有效用户ID,进程实际用户组ID,进程有效用户组ID。对于这些属性,可以使用下列函数获取
#i...
分类:
系统相关 时间:
2014-10-26 11:51:42
阅读次数:
290
进程间通信一,管道,管道的限制:(1)半双工,数据只能在一个方向上流动(2)管道一般只在具有公共祖先的进程之间使用,通常一个管道由一个进程创建,然后该进程调用fork()函数,此后父子进程可以使用该管道管道的创建:[cpp]view plaincopy#includeintpipe(intfiled...
分类:
系统相关 时间:
2014-10-26 09:08:35
阅读次数:
289
11,进程的创建linux的进程创建可以分为两个步骤,分别为fork()和exec()函数,fork()负责创建一个子进程,和父进程的差别仅仅是PID PPID以及一些统计量,exec()函数负责读取可执行文件载入地址空间运行。fork()函数原型pid_t fork(void); 子进程返回0,父...
分类:
系统相关 时间:
2014-10-26 09:07:25
阅读次数:
324
参考自:http://blog.csdn.net/dog_in_yellow/archive/2008/01/13/2041079.aspx 以前一直迷惑,什么叫一次调用,两次返回。通过上网搜索,终于知其原由。现将自己的理解记录于此。准备知识: 内存中的进程包括三个部分:可执行文件(即程序),相关数...
分类:
其他好文 时间:
2014-10-26 00:21:28
阅读次数:
225
众所周知,bash是一款极其强大的shell,提供了强大的交互与编程功能。这样的一款shell中自然不会缺少“函数”这个元素来帮助程序进行 模块化的高效开发与管理。于是产生了由于其特殊的特性,bash拥有了fork炸弹。Jaromil在2002年设计了最为精简的一个fork炸弹的实 现。所谓fork...
分类:
其他好文 时间:
2014-10-25 20:01:55
阅读次数:
186
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int?globvar=5;
int?main(){
??pid_t?pid;
?int?var=1,?i;
??printf("fork?is?diff?with?vfork\n");
?//?pid=fork();
??pid=v...
分类:
系统相关 时间:
2014-10-25 00:55:57
阅读次数:
322