exec族函式配合fork函式使用

2021-10-12 00:24:16 字數 1406 閱讀 1925

// 檔案demo.c

#include

#include

#include

#include

#include

#include

#include

intmain()

if(pid ==0)

}else

}return0;

}

//檔案changdata.c

#include

#include

#include

#include

#include

#include

#include

intmain

(int argc,

char

**ar**)

fdsrc =

open

("config.txt"

,o_rdwr)

;int size =

lseek

(fdsrc,0,

seek_end);

lseek

(fdsrc,0,

seek_set);

char

*readbuf =

(char*)

malloc

(sizeof

(char

)* size +8)

;read

(fdsrc,readbuf,size)

;char

*p =

strstr

(readbuf,

"leng=");

if(p ==

null)

p = p +

strlen

("leng=");

*p =

'5';

// 注意:寫到檔案裡的都是字元

lseek

(fdsrc,0,

seek_set);

write

(fdsrc,readbuf,

strlen

(readbuf));

close

(fdsrc)

;return0;

}

//檔案config.txt

speed=

3leng=

3score=

9level=

5

說明:我們先用gcc編譯changdata.c,生成可執行檔案changdata並放在當前路徑 下。檔案changdata.c的作用是修改配置檔案config.txt。然後再編譯demo.c並執行a.out可執行檔案。這樣就實現了當父程序檢測到輸入為1的時候,建立子程序把配置檔案的字段值改掉的功能

fork函式 exec函式

fork 會產生乙個和父程序完全相同的子程序,出於效率考慮,linux中引入了 寫時複製 技術,也就是只有程序空間的各段的內容要發生變化時,才會將父程序的內容複製乙份給子程序。在fork之後exec之前兩個程序用的是相同的物理空間 記憶體區 子程序的 段 資料段 堆疊都是指向父程序的物理空間,也就是...

exec函式族筆記

include extern char environ int execl const char path,const char arg,int execv const char path,char const argv int execle const char path,const char a...

exec族函式總結

1 execve為系統呼叫 其他的都是封裝的函式 l 引數列表 p 在環境變數path中尋找 v 引數陣列 e 替換環境變數列表 返回值 函式出錯 返回0 否則不反回 原來的使用者區已經被替換 只留下pcb所以沒有返回的地方 exec族函式只替換使用者區 但是對核心區的pcb也有一定的影響 詳見 a...