技术分享

启动新进程
stdlib.h
int
system(const char *string)
which
equals to “sh -c string”

替换进程映像
unistd.h
char
**environ;
int
execl(const char *path, const char *arg0, ...(char *)0);
int
execlp(const char *file, const char *arg0, ...(char *)0);
int
execle(const char *path, const char *arg0,
...,(char
*)0, char * const envp[]);
这三个函数的参数个数是可变的,
参数以一个空指针结束。

int
execv(const char *path, char *const argv[]);
int
execvp(const char *file, char *const argv[]);
这两个函数的第二个参数是一个字符串数组,新程序在启动时,会把在argv[]数组中给定的参数传递给main函数。
int
execve(const char *filename, char *const argv[],
char *const
envp[]);
//int
execvpe(const char *file, char *const argv[],
char *const envp[]);

以字母p结尾的函数通过搜索PATH环境变量来查找新程序的可执行文件路径。若可执行文件不在PATH定义的路径中,就需要把包括目录在内的使用绝对路径的文件名作为参数传递给函数。
全局变量environ可以把一个值传递到新的程序环境中。
execle和execve可以通过参数envp传递字符串数组作为新程序的环境变量。

由exec类函数启动的进程,他的参数表和环境加在一起的总长度是有限的ARG_MAX(posix
> 4096B,linux = 128kb)。错误返回errno

复制进程映像
让进程同时执行多个函数,可以使用线程或从源程序中创建一个完全分离的进程(类似于init)
fork复制当前进程,创建出来的新进程和原进程几乎一样,但新进程有自己的数据空间,环境,fd。和exec函数结合使用。
技术分享

sys/types.h
unistd.h

pid_t
fork(void);
fork失败返回-1,通常因为父进程所用有的子进程数目超限(CHILD_MAX),此时errno被设置为EAGAIN;若进程表没有足够的空间用于创建新的表单或虚拟内存不足,errno为ENOMEM

稿源:七星互联Qixoo.com

unix/linux进程详解的更多相关文章

  1. unix/linux进程详解——代码

    #include <iostream>#include <vector>#include <cstdint>#include <cstring>#inc ...

  2. Linux 进程详解

    Linux内核的七大区间 .进程管理(进程创建,进程的三种状态,进程间的调度,调度算法...) .内存管理(段式管理(Linux所有段都从0开始),页式管理--地址偏移量) .系统调用(C语言库函数的 ...

  3. Linux学习之守护进程详解

    Linux系统守护进程详解                                                              ---转自:http://yuanbin.blog ...

  4. Linux 系统结构详解

    Linux 系统结构详解 Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统 ...

  5. linux syslog详解

    linux syslog详解 分三部分 一.syslog协议介绍 二.syslog函数 三.linux syslog配置   一.syslog协议介绍 1.介绍 在Unix类操作系统上,syslog广 ...

  6. Linux内存详解

    --Linux内存详解 -----------------2014/05/24 Linux的内存上表现的不像windows那么直观,本文准备详细的介绍一下Linux的内存. 请看这下有linux命令f ...

  7. Linux权限详解 命令之 chmod:修改权限

    权限简介 Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功. Linux下文件的权限类型一般包括读,写,执行.对应字母为 r.w.x. Li ...

  8. Linux 目录详解 树状目录结构图

    1.树状目录结构图 2./目录 目录 描述 / 第一层次结构的根.整个文件系统层次结构的根目录. /bin/ 需要在单用户模式可用的必要命令(可执行文件):面向所有用户,例如:cat.ls.cp,和/ ...

  9. PHP 进程详解

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

随机推荐

  1. 自定义表单验证$setValidaity

  2. Ember模板中的操作指向

    模板中的链接操作指向有三个地方,该模板对应的控制器和路由以及视图,默认是先跳转到控制器,如果控制器里没有定义模板中动作的方法,就去该模板对应的路由里找,如果还没找到,就去父级路由找,直到顶级路由,如果 ...

  3. ASP.NET MVC 扩展数据验证 转

    此文只作记录 public class MaxWordsAttribute : ValidationAttribute { public MaxWordsAttribute(int maxWords) ...

  4. ztree插件(JQuery Tree)

    本次使用的ztree插件,基本上所有的需求都能满足,可谓功能强大. * [http://www.ztree.me/v3/api.php zTree v3.0 API 文档] * [http://www ...

  5. C#+OpenGL编程之再见小桃子(The Tao Framework)

    本文基础: C#+OpenGL编程之OpenGL 纹理载入 C#+OpenGL编程之OpenGL 多重纹理 小桃子The Tao FrameworkTao提供的所有库都是完全开源的.其中的多数库都可以 ...

  6. 存储过程中执行动态Sql语句

    MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就 ...

  7. OpenCV人脸检测demo--facedetect

    &1 问题来源 在运行官网的facedetect这个demo的时候,总是不会出来result的图形,电脑右下角提示的错误是“显示器驱动程序已停止响应,而且已恢复 windows 8(R)”. ...

  8. 20135220谈愈敏Blog7_可执行程序的装载

    可执行程序的装载 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一. ...

  9. FileItem类 用法详解

    FileItem类的常用方法 1.boolean  isFormField().isFormField方法用来判断FileItem对象里面封装的数据是一个普通文本表单字段,还是一个文件表单字段.如果是 ...

  10. libtool: Version mismatch error 解决

    在编译一个软件的时候,在 ./configure 和 make  之后可能会出现如下错误: libtool: Version mismatch error.  This is libtool 2.4. ...