Linux exec命令手册

王林
发布: 2024-02-18 16:42:13
转载
828 人浏览过

Linux exec命令手册

功能描述

exec命令在Linux中用于调用并执行指定的命令。通常在shell脚本中使用exec命令来执行其他命令。当在当前终端中使用exec命令时,指定的命令执行完毕后会取代当前进程,而不是创建一个新的子进程。

命令语法

exec [选项]
登录后复制

选项含义

选项 含义
-c 使用一个空环境来执行
-a shell会将名字作为零参数传递给执行的命令
-l 在shell的开头放置一个破折号参数传递给命令

参考实例

实例1

// 首先使用echo命令将文本“www.linuxyz.cn”进行输出:
[root@bunian ~]# echo www.bunian.cn
www.bunian.cn

// 然后再使用exec命令调用echo命令输出同样的信息,并且对输出的信息进行对比,输入指令如下所示:
[root@bunian ~]# exec -c echo www.bunian.cn
www.bunian.cn

// 通过比较两者执行后的结果来看,所实现的功能是相同的,即使用exec命令调用echo命令成功。
登录后复制

实例2

// 查找bunian.txt 并备份为bunian.txt.bak
[root@bunian ~]# find /test -name "bunian.txt" -exec cp {} {}.bak \;
登录后复制

知识扩展

一、系统调用 exec 是以新的进程去代替原来的进程,但进程的PID保持不变。因此,可以这样认为,exec系统调用并没有创建新的进程,只是替换了原来进程上下文的内容。原进程的代码段,数据段,堆栈段被新的进程所代替。

一个进程主要包括以下几个方面的内容:

  • 一个可以执行的程序
  • 与进程相关联的全部数据(包括变量,内存,缓冲区)
  • 程序上下文(程序计数器PC,保存程序执行的位置)
  • 二、exec是一个函数簇,由6个函数组成,分别是以excl和execv打头的。

    执行exec系统调用,一般都是这样,用fork()函数新建立一个进程,然后让进程去执行exec调用。我们知道,在fork()建立新进程之后,父进各与子进程共享代码段,但数据空间是分开的,但父进程会把自己数据空间的内容copy到子进程中去,还有上下文也会copy到子进程中去。而为了提高效率,采用一种写时copy的策略,即创建子进程的时候,并不copy父进程的地址空间,父子进程拥有共同的地址空间,只有当子进程需要写入数据时(如向缓冲区写入数据),这时候会复制地址空间,复制缓冲区到子进程中去。从而父子进程拥有独立的地址空间。而对于fork()之后执行exec后,这种策略能够很好的提高效率,如果一开始就copy,那么exec之后,子进程的数据会被放弃,被新的进程所代替。

    以上是Linux exec命令手册的详细内容。更多信息请关注PHP中文网其他相关文章!

    相关标签:
    来源:mryunwei.com
    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!