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)

大家都在看

  • MySQL实现备份(1)

    完全备份和部分备份 冷备份、热备份、温备份 温备份适用于:myisam 热备份适用于:innodb 物理备份和逻辑备份 完全备份:备份所有数据 部分备份:只备份部分数据内容 两者第…

    Linux 2023年6月7日
    0149
  • 接口压测提示redis获取不到连接数,出现timeout waiting for idle object异常问题定位

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/qmfsun/p/11583355.htmlAuthor…

    Linux 2023年5月28日
    094
  • Windows时间同步命令

    Windows Time服务 sc query W32Time sc start W32Time Windows 时间同步命令 w32tm /config /manualpeerl…

    Linux 2023年6月6日
    090
  • Git基本使用命令

    Git配置 Git最小配置 配置全局账户,该账户对所有Git仓库都有效 git config –global user.name ‘账&#x6237…

    Linux 2023年6月13日
    078
  • Densite_RANK 函数

    densite_RANK()是一个窗口函数,它为分区或结果集中的每一行分配一个等级,等级值之间没有间隔。 行的秩从行之前的不同秩值的数量增加1。 首先,PARTITION BY子句…

    Linux 2023年6月7日
    099
  • Tmux 配置

    前面提到的窗口管理只是 tmux 功能的一小部分,另一个很有用的功能就是,连接到远程主机之后,一旦断开,那么当前账户登录的任务就被取消了,但是使用 tmux 可以在断开之后继续工作…

    Linux 2023年6月7日
    098
  • 我对二进制的理解

    理解进制的重要方法是类比我们熟知的十进制 10进制 一个正常的人类,拥有10根手指,每根手指代表1个信息,那么两双手掌便可表达10个信息。1, 2, 3, …, 10。…

    Linux 2023年6月7日
    061
  • Vue3 封装 Element Plus Menu 无限级菜单组件

    本文分别使用 SFC(模板方式)和 tsx 方式对 Element Plus el-menu 组件进行二次封装,实现配置化的菜单,有了配置化的菜单,后续便可以根据路由动态渲染菜单。…

    Linux 2023年6月7日
    0148
  • 关于《我们做了一个操作系统,不是Windows,也不是Linux》几点补充说明

    前几天发的一个贴子:《我们做了一个操作系统,不是Windows,也不是Linux》,在几个平台引起巨大反响,各种评论都有。我们理解各位网友对国产高新技术产品的热忱,在此感谢大家关心…

    Linux 2023年6月6日
    097
  • 分布式中灰度方案实践

    让请求在导航的服务节上点执行; 一、背景简介 分布式系统中会存在这样的开发场景,不同需求可能涉及到对同一个服务的开发,那么该服务在研发期间就会存在多个版本并行的状态,为了保持不同版…

    Linux 2023年6月14日
    0118
  • Tomcat性能优化方案

    你使用过tomcat的话,简单的说就是”内存溢出”. 通常情况下,这种问题出现在实际的生产环境中.产生这种问题的原因是tomcat使用较少的内存给进程,通过…

    Linux 2023年6月14日
    0112
  • 魔域来了H5游戏详细图文架设教程

    前言 想体验热血传奇的战场吗?想体验满级VIP的尊贵吗?想体验榜一大佬的无敌寂寞吗?各种极品炫酷时装、坐骑、翅膀、宠物通通给你,就在魔域来了H5! 本文讲解魔域来了架设教程,想研究…

    Linux 2023年6月7日
    0122
  • go-切片的追加

    // The append built-in function appends elements to the end of a slice. If // it has suffi…

    Linux 2023年6月13日
    080
  • Java刷题笔记7.25

    一个类构造方法的作用是什么? 主要是完成对&am…

    Linux 2023年6月7日
    0117
  • Linux -查找功能

    Linux下有很多用于查询的命令,持续更新ing find命令 find用于查找指定目录下的文件 语法: find 【查找的位置】(选项) (参数) [filename] 常用选项…

    Linux 2023年5月27日
    0126
  • 前端之JavaScript—BOM和DOM

    一、BOM和DOM概述 通过之前的两篇文章,相信大家已经掌握了JavaScript的一些简单的语法。但是这些简单的语法,并没有和浏览器有任何交互。也就是我们还不能制作一些我们经常看…

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