色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何給你的Linux系統添加一個新的Linux命令

嵌入式悅翔園 ? 來源:嵌入式軟件開發交流 ? 作者:嵌入式軟件開發交 ? 2023-02-15 09:40 ? 次閱讀

前言

平時我們在shell命令行上輸入的命令都是應用程序,比如ls,ifconfig,vi等。我們下載的busybox源碼中就包含著這些程序源碼,那接下來我們來看看如何實現一個命令。

如何實現

我們先分析一下其他的命令,比如gcc:

gcc helloworld.c -o helloworld

上面的編譯指令中,gcc就是命令程序,然后后面的三個都是傳給它的參數。程序是如何獲取到參數的呢?我們都知道main函數的定義如下:

int main(int argc, char * argv[])

argc是參數個數,argv是參數值。所以大家應該都知道如何獲取參數了吧。

有了參數,我們就要進行解析了。這就有兩種方法:

對參數進行一個一個的判斷解析

使用getopt函數進行解析

第一種方式工作量非常大,所以我們來使用第二種方式。

getopt函數介紹

#include 
int getopt(int argc, char * const argv[], const char *optstring);

argc:參數個數,直接將main函數中的argc傳給該函數。

argv:參數數組,直接將main函數中的argv傳給該函數。

optstring: 選項字符串。

里面還有幾個額外的全局變量:

extern char *optarg;
extern int optind, opterr, optopt;

optarg: 保存選項參數

optind: 記錄下一個檢索位置

opterr: 是否將錯誤信息輸出到stderr, 為0時表示不輸出

optopt: 不在選項字符串optstring中的選項

選項字符串

getopt函數中有個optstring參數 ,就是選項字符串。用來指定選項,就比如上面gcc命令中的-o,它就是一個選項。

那如何給getopt傳遞選項字符串呢?舉個例子:

a:b:cd::e

這個選項字符串對應命令行就是-a ,-b ,-c ,-d, -e選項。

冒號表示參數,一個冒號就表示這個選項后面必須帶有參數。這個參數可以和選項連在一起寫,也可以用空格隔開。

兩個冒號的就表示這個選項的參數是可選的,既可以有參數,也可以沒有參數,但要注意有參數時,參數與選項之間不能有空格。

實例

#include 
#include 
int main(int argc, char * argv[])
{
    int ch;
    printf("optind:%d,opterr:%d
", optind, opterr);
    printf("--------------------------
");
    while ((ch = getopt(argc, argv, "abde::")) != -1)
    {
        printf("optind: %d
", optind);
        switch (ch) 
        {
           case 'a':
               printf("option: -a

");   
               break;
           case 'b':
               printf("option: -b
"); 
               printf("The argument of -b is %s

", optarg);
               break;
           case 'c':
               printf("option: -c
");
               printf("The argument of -c is %s

", optarg);
               break;
           case 'd':
               printf("option: -d
");
               break;
          case 'e':
               printf("option: -e
");
               printf("The argument of -e is %s

", optarg);
               break;
          case '?':
               printf("Unknown option: %c
",(char)optopt);
               break;
        }
    }


    return 0;
}

運行結果:

0cb2b6a2-ac6f-11ed-bfe3-dac502259ad0.png

-b選項沒有跟參數則報錯!

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11312

    瀏覽量

    209701
  • Linux系統
    +關注

    關注

    4

    文章

    594

    瀏覽量

    27409
  • 函數
    +關注

    關注

    3

    文章

    4333

    瀏覽量

    62687
  • 命令
    +關注

    關注

    5

    文章

    685

    瀏覽量

    22043
  • Shell
    +關注

    關注

    1

    文章

    366

    瀏覽量

    23402

原文標題:如何給你的Linux系統添加一個新的Linux命令

文章出處:【微信號:嵌入式悅翔園,微信公眾號:嵌入式悅翔園】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux系統中unlink命令的使用

    Linux 中刪除文件,我們通常使用 rm 命令。除此以外,還有另外命令,可以用于刪除文件和鏈接,這就是 unlink
    發表于 09-13 14:29 ?2131次閱讀

    介紹些實用的Linux命令

    作為名軟件開發人員,掌握 Linux 命令是必不可少的技能。即使你使用 Windows 或 macOS,你總會遇到需要使用 Linux 命令
    發表于 08-01 16:12 ?354次閱讀
    介紹<b class='flag-5'>一</b>些實用的<b class='flag-5'>Linux</b><b class='flag-5'>命令</b>

    Linux與用戶有關的命令

    Linux與用戶有關的命令 Linux與用戶有關的命令  passwd命令  出于系統安全考慮
    發表于 01-18 12:46 ?771次閱讀

    Linux系統管理命令

    Linux系統管理命令 Linux系統管理命令  wall
    發表于 01-18 12:47 ?810次閱讀

    Linux系統命令指南

    在“Linux 文件命令精通指南”中,我們討論了利用最基礎和最常用 Linux 文件命令所需的基本信息。在本文中,我將對 Linux
    發表于 05-23 10:23 ?963次閱讀

    Linux必學的系統安全命令

    新的挑戰。本文將重點介紹Linux系統安全的命令。 雖然Linux和Windows NT/2000系統一樣是
    發表于 11-02 15:09 ?0次下載

    linux常用命令實例詳解

    ,就必須從Linux命令學起,通過基礎的命令學習可以進步理解Linux系統。不同
    發表于 11-03 10:19 ?5543次閱讀

    你不可不知的11Linux命令

    Linux命令行吸引了大多數Linux愛好者。正常的Linux用戶
    發表于 11-09 12:14 ?1365次閱讀
    你不可不知的11<b class='flag-5'>個</b><b class='flag-5'>Linux</b><b class='flag-5'>命令</b>

    Linux系統管理命令整理及使用方法介紹

    linux命令是對Linux系統進行管理的命令。對于Linux
    的頭像 發表于 09-23 14:55 ?6847次閱讀

    Linux中的35find命令用法

    Linux查找命令Linux系統中最重要和最常用的命令。查找用于根據與參數匹配的文件指定的
    的頭像 發表于 02-02 16:53 ?3674次閱讀
    <b class='flag-5'>Linux</b>中的35<b class='flag-5'>個</b>find<b class='flag-5'>命令</b>用法

    LINUX操作系統的安裝與Linux常用文件命令

    LINUX操作系統的安裝與Linux常用文件命令說明。
    發表于 06-02 17:45 ?3次下載

    6有趣的Linux命令案例講解

    6有趣的Linux命令案例講解
    發表于 08-11 17:49 ?14次下載

    Linux操作必備150命令

    Linux 命令是對 Linux 系統進行管理的命令。對于 Linux
    發表于 11-12 09:19 ?453次閱讀

    常用Linux命令介紹

    linux命令是對Linux系統進行管理的命令。對于Linux
    的頭像 發表于 02-09 14:31 ?1067次閱讀

    shell命令linux命令樣嗎

    結合在起,形成相當于面向過程的程序,即shell script,從而實現些復雜的功能。 而Linux
    的頭像 發表于 11-08 10:51 ?2890次閱讀
    主站蜘蛛池模板: 年轻的搜子8中字在线观看| 久久国产精品免费网站| 在线观看黄色小说| 亚洲第一免费播放区| 日韩精品一区二区三区AV在线观看| 两百磅美女| 老司机午夜影院试看区| 久久精品AV一区二区无码| 狠狠国产欧美在线视频| 国产在线观看香蕉视频| 国产精品亚洲欧美一区麻豆| 国产69精品久久久久观看软件| 成人亚洲视频| 丰满女友bd高清在线观看| 成人永久免费视频| 干了快生了的孕妇| 国产盗摄一区二区三区| 国产精品久久久久久久久久久| 国产精品久久久久久久久齐齐| 高h肉文np| 国产精品97久久AV麻豆| 国产精品一区二区三区四区五区| 国产精品AV无码免费播放| 国产精品系列在线一区| 韩国伦理电影在线神马网 | 芳草地社区在线视频| 成人在线视频免费| 国产99久久久国产精品成人| 国产精品视频第一区二区三区| 国产啪精品视频网免费| 国产在线精品亚洲一品区| 精品国产美女AV久久久久| 久草在线一免费新视频| 久久婷婷五月综合色丁香花| 麻豆精品人妻一区二区三区蜜桃| 免费。色婬网站| 欧洲最大无人区免费高清完整版| 少妇一夜未归暴露妓女身份| 羞羞答答dc视频| 一本大道无码AV天堂欧美| 6080yy亚洲久久无码|