linux下system和execl函式的區別

2021-09-01 11:24:33 字數 612 閱讀 4990

今天學到了execl函式族,發現函式功能就是呼叫系統的二進位制程式或者一些指令碼檔案,此函式族函式一大堆,可是仔細想想實現的功能和前面的system函式沒什麼區別,感覺system函式方便多了,為何還要exec弄一大堆呢?肯定是有原因的啦!

小結兩點區別關係:

1.system會新起乙個子程序來呼叫要執行的命令。而exec只是用另乙個新程式替換了當前程序的正文、資料、堆和棧段。

即:呼叫exec程式不會建立新程序,呼叫system會建立新程序

2.system底層就是execl

1. system與exec的區別

system會新起乙個子程序來呼叫要執行的命令。而exec只是用另乙個新程式替換了當前程序的正文、資料、堆和棧段。system原始碼:

int system(const char * cmdstring)

if((pid = fork())<0)else if(pid == 0)else

}    }

return status;

}

waitpid()會暫時停止目前程序的執行,直到有訊號來到或子程序結束。

如果執行成功則返回子程序識別碼(pid) ,如果有錯誤發生則返回-1.

linux 下的system函式

linux作業系統下system 函式詳解 執行shell 命令 相關函式 fork,execve,waitpid,popen 表頭檔案 i nclude 定義函式 int system const char string 函式說明 system 會呼叫fork 產生子程序,由子程序來呼叫 bin ...

關於linux下system 函式的總結

曾經的曾經,被system 函式折磨過,之所以這樣,是因為對system 函式了解不夠深入。這裡必須要搞懂system 函式,因為有時你不得不面對它。先來看一下system 函式的簡單介紹 include int system const char command system 函式呼叫 bin s...

Linux 程序狀態和system函式

1 程序的5種狀態 1 就緒態。這個程序當前所有執行條件就緒,只要得到cpu時間就能直接執行。2 執行態 就緒態時得到了cpu就進入執行態開始執行。3 殭屍態 程序已經結束但是父程序還沒來得及 4 等待態 淺度睡眠 深度睡眠 程序在等待某種條件 條件成熟後可進入就緒態。等待態下就算你給他cpu排程程...