main函數原型
int main(int argc, char *argv)
參數由上一級的程序調用傳入,一般是shell,注意,Linux的shell一般會在設置argc和argv之前對文件名參數進行通配符拓展,而MS-DOS的shell則希望程序接受帶通配符的參數,並執行自己的通配符。
通配符只有*,?,[],{}這4種
來自 <https://blog.csdn.net/youmatterhsp/article/details/80528761>
argv[]數組,程序名也作為參數,argv[0]就是程序名
命令行參數約定
0.所有的命令行都應該以一個短橫線(-)開始,其后包含單個字母或數字
1.不帶后續參數的選項可以下一個短橫線后歸並到一起,如 ls -lstr
2.如果某個選項需要參數,則參數應該緊跟在該選項之后
X/Open規范,提供了解析命令行選項的標准用法 getopt()函數
1 #include <unistd.h> 2 3 int getopt(int argc,char *const argv[],const char *optstring); 4 extern char* optarg; 5 extern int optint,opterr,optopt;
P117有使用getopt()函數的例程.
getopt_long()函數可以處理非單個字符的 含義更明確的參數 接受以 -- 開頭的長參數
環境變量&時間和日期
2019年10月23日
12:07
用來控制shell腳本與其他程序行為的變量,可以使用他們來配置用戶環境。
標准環境變量包括終端類型、默認的編輯器、時區等
C語言可以通過putenv()和getenv()函數來訪問環境變量
1 #include <stdlib.h> 2 3 char *getenv(const char *name); 4 int putenv(const char *string);
環境由一組格式為"名字-值"的字符串組成,getenv函數以給定的名字搜索環境中的一個字符串,並返回該名字相關的值。 請求變量不存在or無關聯值 返回null
設置環境僅對程序本身有效,不會反映到外部環境中,這是因為變量的值不會從子進程傳遞到父進程(shell)
程序可以通過environ變量直接訪問這個字符串數組獲得當前的環境變量
時間和日期
所有的UNIX系統都使用同一個時間和日期的起點,即格林尼治時間1970年1月1日0點,其他所有的時間均是以那時經過的秒數來衡量。
時間通過一個預定義的time_t來處理,定義在time.h頭文件中'
1 #include<time.h> 2 time_t time(time_t *tloc);
測算某些事情的持續時間,可以調用difftime()函數,返回值為一個double類型的數據
double difftime(time_t time1,time_t time2);
將時間分解為一個結構,返回世界標准時間
返回當地時間,需要使用 struct tm *localtime(const time_t *timeval);函數
將tm結構轉換成原始數據,使用mktime()函數
使用asctime()函數,返回日期字符串。ctime()函數用於讀取當地時間,返回字符串 相當於 asctime(loacltime(timeval))
strftime()格式化輸出時間函數