chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

如何給你的Linux系統(tǒng)添加一個新的Linux命令

嵌入式悅翔園 ? 來源:嵌入式軟件開發(fā)交流 ? 作者:嵌入式軟件開發(fā)交 ? 2023-02-15 09:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

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

如何實現

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

gcc helloworld.c -o helloworld

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

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選項沒有跟參數則報錯!

審核編輯:湯梓紅

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

    關注

    88

    文章

    11575

    瀏覽量

    216610
  • Linux系統(tǒng)

    關注

    4

    文章

    608

    瀏覽量

    29378
  • 函數
    +關注

    關注

    3

    文章

    4400

    瀏覽量

    66347
  • 命令
    +關注

    關注

    5

    文章

    745

    瀏覽量

    23294
  • Shell
    +關注

    關注

    1

    文章

    373

    瀏覽量

    24899

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Linux系統(tǒng)中unlink命令的使用

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

    介紹些實用的Linux命令

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

    Linux與用戶有關的命令

    Linux與用戶有關的命令 Linux與用戶有關的命令  passwd命令  出于系統(tǒng)安全考慮
    發(fā)表于 01-18 12:46 ?874次閱讀

    Linux系統(tǒng)管理命令

    Linux系統(tǒng)管理命令 Linux系統(tǒng)管理命令  wall
    發(fā)表于 01-18 12:47 ?909次閱讀

    Linux系統(tǒng)命令指南

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

    Linux必學的系統(tǒng)安全命令

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

    linux常用命令實例詳解

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

    你不可不知的11Linux命令

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

    Linux系統(tǒng)管理命令整理及使用方法介紹

    linux命令是對Linux系統(tǒng)進行管理的命令。對于Linux
    的頭像 發(fā)表于 09-23 14:55 ?7262次閱讀

    Linux中的35find命令用法

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

    LINUX操作系統(tǒng)的安裝與Linux常用文件命令

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

    6有趣的Linux命令案例講解

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

    Linux操作必備150命令

    Linux 命令是對 Linux 系統(tǒng)進行管理的命令。對于 Linux
    發(fā)表于 11-12 09:19 ?635次閱讀

    常用Linux命令介紹

    linux命令是對Linux系統(tǒng)進行管理的命令。對于Linux
    的頭像 發(fā)表于 02-09 14:31 ?1512次閱讀

    shell命令linux命令樣嗎

    結合在起,形成相當于面向過程的程序,即shell script,從而實現些復雜的功能。 而Linux
    的頭像 發(fā)表于 11-08 10:51 ?3629次閱讀