c標準庫函式 system

2021-10-22 16:09:44 字數 1181 閱讀 7396

宣告:

int

system

(const

char

*command)

command為請求執行的shell命令構成的字元陣列。

使用:

char command[50]

;strcpy

( command,

"ls -l");

//列出 unix 機上當前目錄下所有的檔案和目錄

int status =

system

(command)

;

該函式執行的步驟是:

(1)在當前程序fork乙個子程序;

(2)呼叫/bin/sh拉起shell指令碼,在子程序中執行shell命令;

(3)返回子程序執行結果的狀態值。

根據上面的步驟system()函式的返回值分為以下幾種情況:

(1)如果子程序建立失敗,則返回-1;

(2)當子程序成功建立後,我們需要判斷shell指令碼有沒有正常執行結束(呼叫/bin/sh拉起shell指令碼失敗或者shell指令碼執行過程中被強制kill掉都算異常),可以通過系統提供的巨集wifexited(status)來判斷,如果wifexited(status)為真,則說明正常結束。但是,注意!!! /bin/sh呼叫失敗會返回127,沒有執行許可權返回126,此時wifexited(status)也為真,注意與下乙個步驟的返回值區分;

(3)當shell指令碼正常執行結束後,shell的返回值被填到status的低8~15位元位中,我們同樣可以通過系統提供的巨集來獲取狀態值,此時使用wexitstatus(status)。我們一般在shell指令碼中會通過返回值判斷本指令碼是否正常執行,如果成功返回0,失敗返回正數。

綜上所述,判斷乙個system()呼叫shell指令碼是否成功的準則是以下三個條件同時成立:

(1)-1 != status

(2)wifexited(status)為真

(3)0 == wexitstatus(status)

#include

#include

#include

#include

intmain()

else

else

}else

}return0;

}

C 標準庫函式

有許多不同的案件中,陣列排序的可能是有用的。演算法 如搜尋看看一些存在於乙個陣列 通常可以變得更簡單和 或更有效時,輸入的資料進行排序。此外,排序是非常有用的可讀性,如當列印列表按字母順序排列的名字。排序通常是通過反覆比較的陣列元素對進行的,和交換他們如果他們滿足一些標準。為了在這些元素進行比較根據...

C 標準庫函式

c 程式通常可以呼叫標準c 庫中的大量函式。這些函式完成一些基本的服務,如輸入和輸出等,同時也為一些經常使用的操作提供了高效的 實現 這些函式中含有大量的函式和類定義,以幫助程式設計師更好地使用標準c 庫。標準c 庫包含以下內容 和 標準c 庫的詳細訊息均在其對應的標頭檔案進行了說明。主要標準c 庫...

C 標準庫函式之排列函式

字典次序 所謂字典次序指兩序列的元素一 一比較直至出現下列情況 如果兩元素不相等,那麼這兩個元素的比較結果就是整個序列的比較結果 如果兩個序列的元素數量不同,則元素較少的序列小於另乙個序列 如果兩個序列沒有更多可以比較的元素,則兩個序列相等。通俗來講就是 str1 str2 等價於str1的前k 1...