1、exec族函数

精彩博文: https://blog.csdn.net/u014530704/article/details/73848573

path:   比如说 ./a.out

arg:  比如以前的cp demo11.c demo12.c

首先在系统中编译很多的可执行程序

我希望呢,11运行到一半的时候   或者  发生某些情况的时候 11会去调用12,让12去运行

./bin/echoarg :路径名

第一个参数程序名:echoarg

真正的参数是 :abc

然后参数必须以NULL结尾

argc 是参数的个数,把每个参数打出来

比如我们加file1  file2

我希望编译出来的a.out 在执行一半的时候 会调用echoarg,怎么办呢?

用下面的代码

执行失败返回值是-1;会打印execl failed!然后打印after execl

执行成功的话,后面那一句(after execl)根本就不会得到执行

如何找到失败的原因呢?

根据返回值的特性

(perror 的用法)

里面说了没有这个文件或者目录

./bin/echoarg

调用的是bin底下的

./当前文件底下的bin文件夹底下的echoarg

echoarg 直接在当前路径

去掉bin就好啦

after execl 在这里就不执行啦

那可不可以调用ls 呢?(echoarg是可执行程序,ls 也是可执行程序)

先找ls 的绝对路径

等同于我们做了个ls

如果我们想调用ls -l 呢?只要在后面传参就可以啦

如果我们想调用ls -l 呢?只要在后面传参就可以啦

好处是什么呢?

假如让你用c 语言获取系统的时间

你不会获取系统的的时间怎么办?

获取时间有个指令date

代码如下,先看date 的绝对路径

2、带个p的exec族函数

假如我现在要用ps   可是还要whereis ps

这样很麻烦

我如果把绝对路径去掉会发生什么事呢?

找不到

但是加个p就可以啦

那加p是什么意思呢?

查找当前的环境变量

比如我在当前目录,可以执行rechoarg

换个目录就不管用了

那有什么办法让这个路径下也运行echoarg 呢?

我们可以把他配置到环境变量里面去

pwd显示当前路径

修改环境变量

原先的可以手动copy进来,也可以直接引用PATH后面加冒号

见证奇迹

都不需要用 ./ 了

都不需要用 ./ 了

我回到工作目录并不在那个目录底下

环境变量:

绿色的都可以执行的

所以只写一个ps 没有关系 ,他会找到环境变量底下的ps

看这个环境变量

bin加进来了 ,目录bin底下

补充:

3、带个v的exec族函数

只不过把我们写的参数放到上面来

运行的结果都是一样的只不过使用的方式不一样而已

如果用execv 呢?

v对比vp需要加个绝对路径

这是没加的                        

找不到文件

加完以后

4、exec配合fork使用

先找到需要的内容   用grep

然后

把上面这个代码插入到下面

粘贴文件

太麻烦了,如果用exec族函数的话

复制的过程

复制的过程

代码如下

这是开始的状态              

这是运行完的结果

5、system 函数

linux system函数详解 - 南哥的天下 - 博客园

返回一个整型数,参数是一个char 型的指针(字符串)

执行一个shell 指令

之前我们都习惯./11 执行这个文件

也可以sh -c ./11 执行这个文件

再来弄一个

原代码

结果

system 还会返回原程序中,执行后面的代码

如果我写错了呢?

6、popen函数

linux下popen的使用心得_libinbin_1014的专栏-CSDN博客_linux popen

如果想要把他的值保存到文件,或者她运行的结果放到字符串里面,通过网络发出去,怎么办?

数据都流失了

那么如何读取流中间的数据呢?

如果我不把结果输出呢?

什么都没输出

linux:exec族函数, exec族函数配合fork使用,system 函数,popen 函数相关推荐

  1. Linux进程编程(PS: exec族函数、system、popen函数)

    目录 1.进程相关概念 程序和进程 查看系统中的进程 ps指令 top指令 进程标识符 使用getpid()获取 父进程,子进程 2.创建进程fork 进程创建发生了什么--C程序的存储空间如何分配 ...

  2. linux中popen函数,system函数与popen函数

    为了更好的理解system()函数返回值,需要了解其执行过程,实际上system()函数执行了三步操作: fork一个子进程: 在子进程中调用exec函数去执行command: 在父进程中调用wait ...

  3. Linux的system和popen的差异

    1.system()和popen()简介 在linux中我们可以通过system()来执行一个shell命令,popen()也是执行shell命令并且通过管道和shell命令进行通信. system( ...

  4. Linux的system()和popen()差异

    Linux的system()和popen()差异 1. system()和popen()简介 在Linux中我们可以通过system()来执行一个shell命令,popen()也是执行shell命令并 ...

  5. linux进程---exec族函数(execl, execlp, execv, execvp, )解释和配合fork的使用

    exec族函数函数的作用:         exec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件.这里的可执行文件既可以是二 ...

  6. Linux进程5:exec族函数(execl, execlp, execle, execv, execvp, execvpe)总结及exec配合fork使用

    exec族函数(execl, execlp, execle, execv, execvp, execvpe)及exec配合fork使用 exec族函数函数的作用: 我们用fork函数创建新进程后,经常 ...

  7. exec族函数、system函数、popen函数、PATH

    exec族函数函数的作用: 我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序.当进程调用exec函数时,该进程被完全替换为新程序(在exec都后面的代码不会被得到执行 ...

  8. Linux函数exec

    Linux函数exec 一.概述: 当用fork函数创建新的子进程后,子进程往往要调用一种exec函数以执行另一个程序.当程序调用一种exec函数时,该进程执行的程序完全替换为新程序,而新程序则从其m ...

  9. linux系统编程学习_(2)进程控制-- fork函数、exec函数族、回收子进程--孤儿进程僵尸进程、wait函数

    linux系统编程学习_(2)进程控制-- fork函数.exec函数族.回收子进程–孤儿进程僵尸进程.wait函数 进程控制 fork()函数 创建一个子进程. pid_t fork(void); ...

最新文章

  1. 关闭linux服务器电源,linux关闭ACPI电源管理模块
  2. WordPress添加前台注册功能
  3. 【MATLAB】三维图形绘制 ( 绘制网格 + 等高线 | meshc 函数 | 绘制平面 + 等高线 | surfc 函数 )
  4. ant 构建_有用的Ant构建标签
  5. 五年后存储会是什么样子
  6. 如何构建NTP时间服务器
  7. 提前观摩打二字计算机英语,英语口语国赛规划.doc
  8. tomcat下载安装及配置教程
  9. linux:mac系统占用空间过大,如何查看系统文件大小分布
  10. 析砂性土层php泥浆护壁,土未工程施工习题集2
  11. 360安全浏览器支持国密功能
  12. 算法设计与分析 ——10-7课程总结
  13. David Time Capsule Kick Off
  14. python数字的表示
  15. Real-Time Rendering Chapter 1~6 读书笔记
  16. 剑指offe 和为S的连续正数序列
  17. BigDecimal 往左移动两位小数_妻子的浪漫旅行:对比之下,这两位妻子拍照超“甜蜜”,亲疏立见...
  18. Unity 中用 Vertex Fragment Shader 实现 surface shader 中的 Diffuse 和 Decal
  19. Winsock 的初始化
  20. Python3 math模块以及运算优先级

热门文章

  1. Allegro禁布区打过孔或走线消除DRC错误
  2. 基于WOA-SVM算法的乳腺肿瘤识别算法的MATLAB仿真
  3. 写作MIMO,LDPC误码率仿真
  4. 年度总结——文字留住岁月,情感点缀年华
  5. 小程序开发系类之基础部分-开发工具
  6. 解决maven cannot change version of project facet dynamic web module to 3.0
  7. CSS中background-position的使用
  8. 性能计数器取网卡流量
  9. 如何快速打造企业ISO体系文件管理
  10. ASUS华硕笔记本电脑的数字小键盘按什么健切换?