linux:exec族函数, exec族函数配合fork使用,system 函数,popen 函数
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                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 函数的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 优盘属性怎么没找到安全选项 如何在优盘属
- 下一篇: 解压iso到u盘怎么做 ISO文件如何解
