日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux:exec族函数, exec族函数配合fork使用,system 函数,popen 函数

發布時間:2025/4/5 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。