欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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 函数的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。