主頁(yè) > 知識(shí)庫(kù) > linux system函數(shù)深入理解

linux system函數(shù)深入理解

熱門標(biāo)簽:凱立德劇院地圖標(biāo)注 曲阜地圖標(biāo)注app 哪個(gè)地圖標(biāo)注更清晰 內(nèi)蒙古電信外呼系統(tǒng) 漳州外呼系統(tǒng)怎么樣 地圖標(biāo)注小區(qū)項(xiàng)目入駐 天津人工電銷機(jī)器人費(fèi)用 開(kāi)封400電話辦理價(jià)格 4s店如何在百度地圖標(biāo)注
system(執(zhí)行shell 命令)
相關(guān)函數(shù)
fork,execve,waitpid,popen
表頭文件
#i ncludestdlib.h>
定義函數(shù)
int system(const char * string);
函數(shù)說(shuō)明
system()會(huì)調(diào)用fork()產(chǎn)生子進(jìn)程,由子進(jìn)程來(lái)調(diào)用/bin/sh-c string來(lái)執(zhí)行參數(shù)string字符串所代表的命令,此命>令執(zhí)行完后隨即返回原調(diào)用的進(jìn)程。在調(diào)用system()期間SIGCHLD 信號(hào)會(huì)被暫時(shí)擱置,SIGINT和SIGQUIT 信號(hào)則會(huì)被忽略。
返回值
=-1:出現(xiàn)錯(cuò)誤
=0:調(diào)用成功但是沒(méi)有出現(xiàn)子進(jìn)程
>0:成功退出的子進(jìn)程的id
如果system()在調(diào)用/bin/sh時(shí)失敗則返回127,其他失敗原因返回-1。若參數(shù)string為空指針(NULL),則返回非零值>。
如果system()調(diào)用成功則最后會(huì)返回執(zhí)行shell命令后的返回值,但是此返回值也有可能為 system()調(diào)用/bin/sh失敗所返回的127,因此最好能再檢查errno 來(lái)確認(rèn)執(zhí)行成功。
附加說(shuō)明
在編寫(xiě)具有SUID/SGID權(quán)限的程序時(shí)請(qǐng)勿使用system(),system()會(huì)繼承環(huán)境變量,通過(guò)環(huán)境變量可能會(huì)造成系統(tǒng)安全的問(wèn)題。
范例
#i ncludestdlib.h>
main()
{
system(“ls -al /etc/passwd /etc/shadow”);
}
執(zhí)行結(jié)果:

-rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd
-r--------- 1 root root 572 Sep 2 15 :34 /etc/shado

例2:

char tmp[];
sprintf(tmp,"/bin/mount -t vfat %s /mnt/usb",dev);
system(tmp);
其中dev是/dev/sda1。

標(biāo)簽:綿陽(yáng) 武漢 莆田 南京 陽(yáng)泉 開(kāi)封 南陽(yáng) 黔南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《linux system函數(shù)深入理解》,本文關(guān)鍵詞  linux,system,函數(shù),深入,理解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《linux system函數(shù)深入理解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于linux system函數(shù)深入理解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章