当前位置:
首页 >
linux:exec族函数, exec族函数配合fork使用,system 函数,popen 函数
发布时间:2025/4/5
55
豆豆
生活随笔
收集整理的这篇文章主要介绍了
linux:exec族函数, exec族函数配合fork使用,system 函数,popen 函数
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
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
如果想要把他的值保存到文件,或者她运行的结果放到字符串里面,通过网络发出去,怎么办?
数据都流失了
那么如何读取流中间的数据呢?
如果我不把结果输出呢?
什么都没输出
《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读总结
以上是生活随笔为你收集整理的linux:exec族函数, exec族函数配合fork使用,system 函数,popen 函数的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 优盘属性怎么没找到安全选项 如何在优盘属
- 下一篇: linux:进程之间的通信