乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      深入理解C語言main函數的參數

       樂創(chuàng)客搬運工 2021-04-29

      文/Edward



       1  命令就是程序
      我想絕大多數看這篇文章的讀者基本上都用過Windows操作系統(tǒng)下的命令提示符。比起圖形化界面的操作,如果熟悉了Windows的命令提示符,你將會更快地操作這個操作系統(tǒng)。Windows圖形化界面如圖1所示。

      圖1 Windows圖形化界面

      不過,在Windows底下,大部分操作者還是習慣于圖形化界面的操作,因為作為一個商用化個人電腦操作系統(tǒng),Windows的圖形化界面做的非常流利,功能非常齊全。而如果你是一名服務器運維人員,你的服務器操作系統(tǒng)是Linux,而且Linux主機位于云端,那么你在運維的時候大概率會通過ssh工具遠程登陸,展開日常的運維工作。此時,這種Linux下的終端命令操作,將會是你日常的操作,如圖2所示。

      圖2 Linux下的終端界面

      在操作Linux終端時,我們會在終端里面輸入常用的命令,在Linux操作系統(tǒng)“一切皆文件”的設計哲學下,你日常輸入的這些命令,其實都是一個個“小程序”。然而,幾乎所有的操作系統(tǒng)都一樣,你想要操作一個命令,這個命令對應的可執(zhí)行文件必須位于操作系統(tǒng)的環(huán)境變量中,在Linux操作系統(tǒng)下,這個環(huán)節(jié)變量的名稱叫做“PATH”,我們可以使用”echo $PATH”命令將環(huán)境變量打印出了,如圖3所示。

      圖3 Linux下的環(huán)境變量

      通過環(huán)境變量的打印,我們可以清楚的看到此Linux操作系統(tǒng)的環(huán)境變量路徑,只要可執(zhí)行文件或者鏈接(軟連接)文件位于這些文件目錄下,那么我們直接在終端里面輸入對應的應用程序名稱即可運行。
      現(xiàn)在,我們使用“cd /bin”命令打開根目錄下的“bin”文件夾,我們可以發(fā)現(xiàn)很多平時常用的命令,如“cp”,“chmod”等,如圖4所示。

      圖4 /bin文件夾下的可執(zhí)行文件

       2  Linux下命令執(zhí)行的原理
      上述內容,我們大致了解了Linux下操作命令終端運行可執(zhí)行文件的原理,這些命令說到底都是應用程序。但是大家是否想過,這些命令在運行時后面可以跟上命令選項,如“l(fā)s -l”可以列出當前文件夾下所有文件的詳細信息,“l(fā)s -s”可以列出所有文件的大小。那么命令后面的參數是如何傳進命令的應用程序里面的呢?如圖5所示。

      圖5 ls命令不同參數下的輸出

       3  C語言main函數的入口
      這些Linux命令程序大多都是采用C語言開發(fā)而成的,我們平時都知道,C語言整個程序的唯一入口就是“main”函數,一般我們在做一些簡單程序的時候都是用“int main(void)”的形式來定義主函數,而Linux下,一個C語言“main”函數的標準原型應該是“int main(int argc, char *argv[], char *env[] );”,其中的三個參數分別是:
      int argc:傳入參數的數量;
      char *argv[]:傳入的參數列表;
      char *env[]:環(huán)境表地址。
      在ANSI C中,規(guī)定main函數只有兩個參數,argc和argv,而且第三個參數與全局變量environ相比也沒有帶來更多益處,所以POSIX.1也規(guī)定應使用environ而不使用第三個參數。通常用getenv和putenv函數來存取特定的環(huán)境變量,而不是用environ變量。所以我們見到的main函數的原型多是下面這種 形式:“int main ( int argc, char* argv[]);”。
      比如,我們假設在Linux下有一個“小程序”x,在我們使用x命令的時候,后面會有可變的參數a,b,c。一般我們使用這個x命令的時候,它的形式為“x  ”,也就是說,x后面可以跟0個,1個,2個,3個參數,那當這個命令執(zhí)行的時候,傳入x的main函數時,“agrc”表示參數個數,如當用戶使用“./x a b”運行這個程序時,“agrc”為3,而這時候,*agrv[]這變成了長度為3的字符串數組,其中agrv[0]=”./x”,agrv[1]=”a”, agrv[2]=”b”。按照這個思路,我們可以寫出如圖6所示的代碼。

      圖6 x命令的實現(xiàn)

      最后,我們只需要將x可執(zhí)行文件放到環(huán)境變量路徑中去,就可以在終端的任何地方運行這個x命令了。由于x名稱太過簡單,我們首先先將x改名成“xccmd”,再將其移入“/usr/sbin”文件夾中。接著,我們退到根目錄底下來運行命令“xccmd a b c d e f”。如圖7所示。

      圖7 將編譯結果添加到環(huán)境變量

      以上就是Linux操作系統(tǒng)下添加自定義程序的方法,Windows下也適用,如果想實現(xiàn)具體的功能,只需要在代碼里面實現(xiàn)即可。

       附 程序源碼
      #include <stdio.h>int main(int argc, char* argv[]){ int i; printf("argc:%d\n", argc); for(i=0;i<argc;i++) { printf("argv[%d]:%s\n", i, argv[i]); } return 0;}


        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多