C語言中system和exec的本質區別

2021-05-22 17:25:28 字數 992 閱讀 6272

system是用shell來呼叫程式=fork+exec+waitpid.

而exec是直接讓你的程式代替用來的程式執行

system 是在單獨的程序中執行命令,完了還會回到你的程式中。

而exec函式是直接在你的程序中執行新的程式,新的程式會把你的程式覆蓋,除非呼叫出錯,否則你再也回不到exec後面的**,就是說你的程式就變成了exec呼叫的那個程式了.

看一下,下面的例子,因為這裡是perl組所以就用perl來具例子,實際情況下,在c中也差不多..

---------------------------------

#!/usr/bin/perl

#example1.pl

system("you_program");

print "you can see me! ";

---------------------------------

---------------------------------

#!/usr/bin/perl

#example2.pl

exec("you_program");

print "you can't see me! ";

---------------------------------

在example1.pl中,在你的程式執行完畢以後,會執行print語句。

在example2.pl中,由於exec將程式your_program代替了本身,

因此程式不再會執行print語句。

在linux下,exec通常會和fork語句一起用。

看下面的這個例子

--------------------------------------------

#!/usr/bin/perl

#example for fork() and exec()

$pid = fork();

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

C語言中的system函式

在linux c程式設計時,system函式有時是很好用的。例如在c中需要呼叫openssl時可以這樣呼叫 int cy system const char command,int status otherwise,ret cmd返回資訊 status ret if wifexited status...

C語言中的SYSTEM函式

system函式 是可以呼叫一些dos命令,比如 system cls 清屏,等於在dos上使用cls命令 下面列出常用的dos命令,都可以用system函式呼叫 assoc 顯示或修改副檔名關聯。at 計畫在計算機上執行的命令和程式。attrib 顯示或更改檔案屬性。break 設定或清除擴充套件...

C語言中system呼叫shell指令碼的問題

在c語言中使用system 語句呼叫shell指令碼時,c語言程式並不會等待system 語句執行完畢尤其在shell指令碼有呼叫bash下命令時並向檔案輸出時,又無法用重新整理標準輸出流緩衝區的方式來解決亂序輸出的問題.例如 c中部分 for int i 0 i 5 i system test.s...