linux的system函式的實現原始碼
system()會呼叫fork()產生子程序,由子程序來呼叫/bin/sh-c cmdstring來執行引數cmdstring字串所代表的命令,此命令執行完後隨即返回原呼叫的程序。
int
system
(const
char
* cmdstring)if(
(pid =
fork()
)<0)
else
if(pid ==0)
else}}
return status;
}
system函式的應用一
#include
#include
#include
#include
#include
#include
#include
intmain()
else
if(pid==0)
}else
}return0;
}
system函式的應用二
#include
#include
#include
//函式原型:int execl(const char *path, const char *arg, ...);
intmain
(void);
if(execv("/bin/ps",ar**) == -1) */
// if(execlp("ps","ps",null,null) == -1)if(
system
("ps")==
-1)printf
("after execl\n");
return0;
}
popen函式
比system函式在應用中的好處:可以獲取執行的輸出結果
#include
file *
popen
(const
char
*command,
const
char
*type)
;
若type是」r」,則檔案指標是連線到子程序執行command命令的標準輸出,如果type是」w」,則檔案指標連線到子程序執行command命令的標準輸入。
#include
#include
#include
// size_t fread(void *ptr, size_t size, size_t nmemb, file *stream);
intmain
(void);
file *fp;
fp =
popen
("ps"
,"r");
int nread =
fread
(ret,1,
1024
,fp)
;printf
("read ret %d byte, ret=%s\n"
,nread,ret)
;return0;
}
system函式和popen函式
include file popen const char command,const char type int pclose file stream popen總是和pclose一起出現被使用的。popen 建立乙個管道,通過fork或者invoke乙個子程序,然後執行command。返回值在標...
popen函式和system函式詳解
我們先用man指令查一下popen函式 函式說明 1 popen 會呼叫fork 產生子程序,然後從子程序中呼叫 bin sh c來執行引數command的指令。2 引數type可使用 r 代表讀取,w 代表寫入。依照此type值,popen 會建立管道連到子程序的標準輸出裝置或標準輸入裝置,然後返...
popen函式和system函式詳解
1 popen函式 我們先用man指令查一下popen函式 函式說明 1 popen 會呼叫fork 產生子程序,然後從子程序中呼叫 bin sh c來執行引數command的指令。2 引數type可使用 r 代表讀取,w 代表寫入。依照此type值,popen 會建立管道連到子程序的標準輸出裝置或...