exec

exec 函数

exec()函数通过运行其他程序来替换当前进程。

新程序启动后PID和老程序一样,就像两个程序接力跑,你的程序把进程交接给了新程序。

exec函数众多,可以分为两种类型

  • 列表函数
  • 数组函数

列表函数

execl() execlp() execle()

以上三个函数以参数列表的形式接收命令行参数

参数

程序

第一个参数告诉exec() 函数将运行什么程序。 对 execl()execle()来说就是程序的绝对路径。

execlp()来讲就是程序的名字,它会根据名字来查找程序。

命令行参数

需要列出想使用的命令行参数

NULL

最后一个命令行参数借宿后需要加上NULL,告诉函数没有其他参数了

环境变量(如果有的话)

如果调用了以…e()结尾的exec()函数,还可以传递环境变量数组 。

示例

exec

数组函数

execv() execvp() execve()

数组函数将命令行参数保存在数组中

exec

ps:上面两个函数唯一的区别就是execvp会从PATH中查找程序

总结

exec

返回值

以上六个函数,若失败则返回-1, 若失败则不返回

代码示例

test.c

#include
#include
#include
#include
#include

int main(void)
{
    pid_t pid = -1;

    pid = fork();
    if (pid > 0)
    {
        // 父进程
        printf("parent, 子进程id = %d\n", pid);
    }
    else if (pid == 0)
    {
        printf("执行子进程\n");
        execl("/usr/bin/ls", "ls", "-l", NULL);
        return 0;
    }
    else
    {
        perror("fork");
        return -1;
    }
    return 0;
}

运行结果

exec

Original: https://www.cnblogs.com/wojiuyishui/p/16670077.html
Author: 我就一水
Title: exec

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578650/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Ubuntu下搭建apache2+GGI环境

    参考:https://blog.csdn.net/nanfeibuyi/article/details/108551159 就先记录步骤吧 Original: https://ww…

    Linux 2023年6月8日
    083
  • 如何配置静态路由

    1.主机A想要和主机B 进行通讯,首先会发送一个ARP的广播。 2.第一次封装包含:源IP(192.168.1.2)目的IP(192.168.2.2);源Mac(11-11)目的M…

    Linux 2023年6月6日
    099
  • php发送邮件 (phpmailer)

    1.首先下载phpMailer文件官方文件https://sourceforge.net/projects/phpmailer/; 还有class.smtp.php. 2.去配置一…

    Linux 2023年6月14日
    073
  • docker的基本使用

    一、 实验前置知识 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是…

    Linux 2023年6月13日
    068
  • Go语言中的零值坑记

    开箱即用 什么叫开箱即用呢?因为 Go语言的零值让程序变得更简单了,有些场景我们不需要显示初始化就可以直接用,举几个例子: 切片,他的零值是 nil,即使不用 make进行初始化也…

    Linux 2023年6月6日
    0114
  • Windows Server 新增磁盘处于脱机状态解决办法

    解决方案: Cmd命令行操作如下: 1,进入diskpart模式 2、列出磁盘情况 3、选择脱机的磁盘 4、联机磁盘 5、清除磁盘属性 6、进入磁盘管理,提示初始化 每天记录一点,…

    Linux 2023年6月8日
    0100
  • JVM核心之JVM运行和类加载全过程

    为什么研究类加载全过程? 有助于连接JVM 运行过程 更深入了解java 动态性(解热部署,动态加载),提高程序的灵活性 类加载机制 JVM 把class 文件加载到内存,并对数据…

    Linux 2023年6月13日
    077
  • Canal.adapter报错

    Canal.adapter报错 报错如下: 2021-09-09 15:56:33.669 [Thread-12] ERROR c.a.o.canal.adapter.launch…

    Linux 2023年6月8日
    099
  • PHP安装和部署

    一、关闭防火墙 二、安装EPEL源、REMI源、yum源管理工具、PHP 7.3 ①安装epel源 [root@localhost yum.repos.d]# yum instal…

    Linux 2023年6月7日
    0121
  • Linux目录结构信息

    一、系统目录结构介绍 1.1 常见系统目录结构 Windows下: C:\windows D:\Program Files Linux下: /etc/sysconfig /usr/…

    Linux 2023年5月27日
    072
  • 单片机 MCU 固件打包脚本软件

    ​ 1 前言 开发完 MCU 软件后,通常都会生成 hex 文件或者 bin 文件,用来做固件烧录或者升级,如果用来做产品开发,就涉及到固件版本的问题,初学者通常采用固件文件重命名…

    Linux 2023年6月7日
    091
  • Java语言高级(第六部分)函数式接口 Stream流、方法引用 ->(个人学习记录笔记)

    第一章 函数式接口 1.1 概念 函数式接口在Java中是指: 有且仅有一个抽象方法的接口。 函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda…

    Linux 2023年6月8日
    079
  • 缓冲区溢出二:从缓冲区溢出到获取反弹shell实例

    一、说明 之前写过一篇”缓冲区溢出一:函数调用过程中的堆栈变化及缓冲区溢出利用原理“,道理讲得还可以,但现在看还是需要一个示例来讲解从攻击角度如何实现返回地…

    Linux 2023年5月28日
    0106
  • 玩转SpringBoot之捣鼓 Redis

    我们都知道,把首页数据放到Redis里,能够加快首页数据的访问速度。但是我们要如何准确又快速的将 Redis 整合到自己的 SpringBoot2.x 项目中呢?今天阿淼就带大家爬…

    Linux 2023年5月28日
    0106
  • Linux命令之find、grep、echo、tar、whoami、uname

    1. whoami–查看当前登录的用户名 book@100ask:~/linux$ whoami book 2. echo–打印命令,配合’&g…

    Linux 2023年6月6日
    096
  • 跳石板—牛客网

    #include #include #include using namespace std; //计算第i个&#x7684…

    Linux 2023年6月13日
    0112
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球