fork()是用于建立进程的手段之一,但是fork()只能建立相同程序的副本。幸运的是,Linux系统还提供了系统调用exec系列。它可用于新程序的运行。

如果exec调用成功,调用进程将被覆盖,然后从新程序的入口开始执行。这样就产生了一个新的进程,但是它的进程标识符与调用进程相同。这就是说,exec没有建立一个与调用进程并发的新进程,而是用新进程取代了原来的进程。所以,对exec调用成功后,没有任何数据返回,这与fork()不同。

下面给出了exec系列调用在Linux系统中unistd.h中的函数声明:

int execl(const char *path, const *arg, ...);

int execlp(const char *file, const char *arg, ...);

int execle(const char *path, const char *arg, ..., char* const envp[]);

int execv(const char *path, char* const argv[]);

int execvp(const char *file, char* const argv[]);

下面来看一个exec函数的示例:

#include

#include

int main()

{

printf("Executing ls\n");

execl("/bin/ls", "ls", "-la", NULL);

printf("------End of execl()\n");

// 输出了下面的语句就表明execl调用失败了

perror("execl failed to run ls");

return 0;

}

运行结果:

Executing ls

总用量 56

drwxrwxr-x 2 zcm zcm 4096 11月 2 16:26 .

drwxr-xr-x 11 zcm zcm 4096 10月 17 11:26 ..

-rwxrwxr-x 1 zcm zcm 5396 9月 21 11:17 p0

-rw-r--r-- 1 zcm zcm 455 9月 21 11:16 p0.c

-rwxrwxr-x 1 zcm zcm 5195 11月 2 16:26 p1

-rw-r--r-- 1 zcm zcm 259 11月 2 16:26 p1.c

-rwxrwxr-x 1 zcm zcm 5051 9月 21 10:23 p2

-rw-r--r-- 1 zcm zcm 152 9月 21 10:23 p2.c

-rwxrwxr-x 1 zcm zcm 5489 10月 17 09:26 travel

-rw-rw-r-- 1 zcm zcm 1405 10月 17 09:26 travel.c

[zcm@c #64]$

注意到了吗:没有“printf("------End of execl()\n"); “的输出噢。这正好说明了:exec没有建立一个与调用进程并发的新进程,而是用新进程取代了原来的进程。

linux下exec用法,linux下exec系列(一)相关推荐

  1. linux find ok用法,linux下find命令用法

    一.Linux中find常見用法示例·find    path    -option    [    -print ]    [ -exec    -ok    command ]    {} /; ...

  2. linux下sqlplus用法,linux也适用的sqlplus 用法

    Oracle在Oracle 8.0.5之前都是使用字符界面来进行数据库的操作与管理的.而那时候其他最重要的工具就是SQL*plus, 它既可以编辑SQL语句,也可以编辑和调试pl/sql的程序. 下面 ...

  3. 在linux下nice用法,Linux下nice/renice命令小结

    1. nice命令 内核根据进程的nice值决定进程需要多少处理器时间. nice值的取值范围是是: -20到20. 一个具有-20 的 nice 值的进程有很高的优先级. 一个 nice 值为 20 ...

  4. linux下gzip用法,Linux下tar和gzip命令的方法

    tar [选项] 压缩(解压缩)的文件名 选项:-c 建立新的归档文件 -r 向归档文件末尾追加文件 -x 从归档文件中解出文件 -O 将文件解开到标准输出 -v 处理过程中输出相关信息 -f 对普通 ...

  5. linux curl d 用法,Linux下cURL使用教程之三:curl基本使用

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 在介绍完cURL简介和需要的HTTP协议概述之后.终于可以回归正题,进入curl的使用方法. curl命令格式 基本的使 ...

  6. linux里find用法,Linux中find命令基本使用方法

    Linux中find命令是系统中查找文件的命令,可以帮助用户快速找出自己所需要的文件. 通过文件名查找 find -name 文件名 find /etc/ -name passwd ###查找/etc ...

  7. linux signal函数用法,linux信号机制之sigaction构造体浅析,signal 函数,信号捕捉.

    来自:http://hi.baidu.com/phenix_yw/blog/item/6eb4ca391d1479f23a87ce19.html 信号安装函数sigaction(int signum, ...

  8. linux中gawk用法,Linux - gawk 命令

    gawk 是 awk 的 GUN 版 =========================================== 是一种<模式扫描和处理>语言.它搜索一个或多个文件,查看这些文 ...

  9. linux env命令用法,Linux env命令

    可以使用env命令传递环境变量,而无需在外部环境(当前shell)上设置它们. 假设您想运行一个Node.js应用程序,并为其设置USER变量. 您可以运行: env USER=flavio node ...

  10. linux 脚本scp用法,Linux scp命令用法及实例分享

    Linux下scp的用法 scp就是secure copy,一个在linux下用来进行远程拷贝文件的命令. 有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通 ...

最新文章

  1. 从“如何学会做一只机械表”讲如何创新,如何做好产品
  2. SFB公开课:TMG/IISARR/Web Application Proxy/发布UC(Lync/SFB)-2-通知
  3. Unix 和 Linux
  4. ARM Cortex-M3初探
  5. 类的加载过程三:Initialization
  6. MongoDB集群分片部署指南
  7. python size和count_python中size和count的区别
  8. 可缩放的思维导图_成就销售王者的23大流程,配思维导图,可直接学习收藏
  9. c语言水利工程编程题目,C程序设计(双语版)习题答案精选.doc
  10. 40.django中重要概念
  11. python_文件处理模式
  12. FPGA实验记录一:1位全加器设计
  13. Windows下Postman安装以及汉化
  14. 博弈论中的几个经典问题
  15. win10共享其它计算机文件,两台win10间如何文件共享
  16. python中outside function_运行提示SyntaxError: 'yield' outside function
  17. 用c语言实现矩阵的转置算法,C++实现矩阵原地转置算法
  18. 在windows下编译erlang内建函数(nif)的dll文件
  19. C语言试题173之实现插入排序算法
  20. 2010.5.11项目管理群主题:网游那些事-DDV731731-SSE

热门文章

  1. 实验05 视图的创建与管理
  2. android—AOSP、AOKP、CM的区别
  3. 整型数据分类及其取值范围
  4. 吴式太极大师战波简介
  5. linux光盘映像文件挂载,linux系统挂载光盘镜像ISO的方法
  6. springboot 微信支付接口
  7. Bandit算法学习[网站优化]02——epsilon-Greedy 算法
  8. 眼保健操练习方法,眼保健操图解教程
  9. Java输入时间输出热量卡路里的小程序
  10. 消息轨迹、ACL 与多副本搭建