一 点睛

execlp函数会从PATH环境变量所指得目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当作该文件的argv[0]、argv[1]......,最后一个参数必须用空指针(NULL)结束。

execlp函数声明如下:

int execlp(const char *filename, const char *arg, ...)

如果执行成功,则函数不会返回,执行失败则直接返回-1,失败原因存于errno中。

二 使用execlp执行不带选项的命令程序pwd

1 代码

#include <unistd.h>  int main(int argc, char* argv[])
{execlp("pwd", "",  NULL);return 0;
}

2 编译并运行

[root@localhost test]# g++ test.cpp -o test
[root@localhost test]# ./test
/root/C++/ch05/5.8/test

3 说明

execlp的第一个函数直接用pwd这个命令程序即可,而不需要写出其全路径,因为环境变量PATH中已经包含路径/usr/bin了。

对应第二个参数为什么是空字符串,这个其实不重要,传任意字符串都可以,但必须要有,不能为NULL,否则运行会报错。这只是针对创建系统命令程序的情况,我们自己的程序无须这样。

三 使用execlp执行我们自己编写的程序

1 编写我们自己写的程序

#include <string.h>
using namespace std;
#include <iostream>
int main(int argc, char* argv[])
{int i;cout <<"argc=" << argc << endl; //打印下传进来的参数个数for(i=0;i<argc;i++)   //打印各个参数cout<<argv[i]<<endl;
}

2 编译并运行

[root@localhost test]# g++ mytest.cpp -o mytest
[root@localhost test]# ./mytest hello world
argc=3
./mytest
hello
world

3 execlp调用我们编写的程序

#include <unistd.h>
using namespace std;
#include <iostream>int main(int argc, char* argv[])
{execl("mytest","hello","boys", NULL); //传入两个参数cout << "------------------\n";//如果execl执行成功,这一句不会执行到的。return 0;
}

4 运行结果

[root@localhost test]# g++ test.cpp -o test
[root@localhost test]# ./test
argc=2
hello
boys

C++之execlp函数用法相关推荐

  1. Linux下execl函数与execlp函数的具体详细用法

    execl()函数:执行文件函数 头文件: #include<unistd.h> 定义函数: int execl(const char * path, const char * arg, ...

  2. 关于linuxC语言中创建进程,利用execlp函数执行.c程序问题

    关于linuxC语言中创建进程,利用execlp函数执行.c程序问题 对于一个小白来说,这个系统调用真的太难了,完全摸不着头脑啊,一搜execlp函数,全是执行的命令,什么传参硬是没懂. 不过说到底, ...

  3. 2021年大数据常用语言Scala(三十七):scala高级用法 高阶函数用法

    目录 高阶函数用法 作为值的函数 匿名函数 柯里化(多参数列表) 闭包 高阶函数用法 Scala 混合了面向对象和函数式的特性,在函数式编程语言中,函数是"头等公民",它和Int. ...

  4. php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?

    foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...

  5. linux中awk下 gsub函数用法

    gsub函数则使得在所有正则表达式被匹配的时候都发生替换 gsub(regular expression, subsitution string, target string);简称 gsub(r,s ...

  6. ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)

    ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...

  7. 详细记录python的range()函数用法

    详细记录python的range()函数用法 使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的sl ...

  8. python Pool常用函数用法总结

    在本篇内容里小编给大家整理的是一篇关于python Pool常用函数用法总结内容,有需要的朋友们可以学习下. 1.说明 apply_async(func[,args[,kwds]):使用非堵塞调用fu ...

  9. C++计算程序耗时函数用法汇总

    文章目录 前言 方法一(使用频率:常用) 方法二(使用频率:次之) 方法三(使用频率:常用) 补充:方法四 方法五 最常用的时间戳获取方法 前言 这里简单将自己在项目中经常用到的统计耗时的函数用法做个 ...

最新文章

  1. lepus mysql 慢查询_天兔 -Lepus 慢查询分析平台配置
  2. 壕无人性!618战报发布:天猫、京东累计下单金额近万亿
  3. pyltp实体识别_哈工大 PYLTP 安装 排坑指南
  4. python web自动化代码_Python + selenium 自动化框架介绍+全代码附上
  5. java8新特性 lambda Stream map(函数式编程)
  6. 图——基本的图算法(四)关键路径
  7. vue的npm run dev做了什么
  8. python语法错误检查_如何检查python的语法正确性
  9. fc安卓模拟器_【经典手机回顾】索尼爱立信Xperia Play:最早的安卓游戏手机
  10. STM32F103_study49_The punctual atoms(STM32 Bit operation and logical operation in C language )
  11. lia人是什么意思_Lia[莉雅,]的中文翻译及英文名意思
  12. docker 安装kafka
  13. 0004基于单片机智能垃圾桶控制系统设计
  14. feek()、ftell()和rewind()用法
  15. 英语音频翻译软件哪个好?有什么能把英语音频翻译出来的软件?
  16. linux识别fastboot设备,fastboot 没有识别手机
  17. 手把手cameraX实现相机预览和拍照
  18. vue+vant 实现手机号 获取验证码页面
  19. CarPlay无线连接方案详解(WIFI部分)
  20. 102579-48-6,三肽Gly-Phe-Gly-aldehyde, H2N-GFG-CHO

热门文章

  1. 什么是VI设计?VI设计有什么作用?
  2. unc 目录不受支持_DOS批处理不支持将UNC 路径作为当前目录的解决方法
  3. 《黑客攻防技术宝典:Web实战篇》第二版习题答案
  4. C# URL/HTML Encode与Decode
  5. vb6 combo根据index显示选项内容_「桌游设计」一时COMBO一时爽,一直COMBO一直爽
  6. Mogrt标题模板 温馨花朵爱心动态母亲节标题PR模板下载
  7. NVIDIA Xavier NX的Intel Realsense双目相机(T265+D435i)环境搭建
  8. Linux Nexus3.X介绍与操作
  9. 基于YOLOv5+C3CBAM+CBAM注意力的海底生物[海参、海胆、扇贝、海星]检测识别分析系统
  10. Dzzoffice开源办公项目