system
是用shell來呼叫程式=fork+exec+waitpid,而exec是直接讓你的程式代替用來的程式執行。
system
是在單獨的程序中執行命令,完了還會回到你的程式中。而exec函式是直接在你的程序中執行新的程式,新的程式會把你的程式覆蓋,除非呼叫出錯,否則你再也回不到exec後面的**,就是說你的程式就變成了exec呼叫的那個程式了。
看一下,下面的例子.
例子1---------------------------------
system("your_program");
printf("you can see me! ");
---------------------------------
例子2---------------------------------
exec("your_program");
printf("you can't see me! ");
---------------------------------
在例子1中,在你的程式執行完畢以後,會執行printf語句。
在例子2中,由於exec將程式your_program代替了本身,因此程式不再會執行printf語句。
在linux下,exec通常會和fork語句一起用。
看下面的這個例子
--------------------------------------------
pid_t pid = fork();
if (pid < 0) else if (pid == 0) else
Linux中的system和popen的效率比較
在本次專案中有比較多的直接調命令的地方,所以就在想用system函式還是popen函式,哪個效率更高呢。在網上找了找,看見說什麼的都有,而且感覺他們的測試方法也有點不太贊同,所以就自己寫了個測試 看看到底哪個效率更高點。關於system函式和popen函式的基本知識在這就不再提了,只發表一下自己的測...
LINUX中system()函式詳解
相關函式 fork,execve,waitpid,popen 表頭檔案 include 定義函式 int system const char string 函式說明 system 會呼叫fork 產生子程序,由子程序來呼叫 bin sh c string來執行引數string字串所代表的命令,此命 ...
linux下system和execl函式的區別
今天學到了execl函式族,發現函式功能就是呼叫系統的二進位制程式或者一些指令碼檔案,此函式族函式一大堆,可是仔細想想實現的功能和前面的system函式沒什麼區別,感覺system函式方便多了,為何還要exec弄一大堆呢?肯定是有原因的啦!小結兩點區別關係 1.system會新起乙個子程序來呼叫要執...