rpm qa C 介面的實現過程

2021-07-14 02:20:54 字數 1568 閱讀 1226

1.rpm -qa 的c**的實現

這是寫死的,僅實現rpm -qa的功能

[main.c]

#include #include #include #include #include static struct poptoption optionstable=,,,

,popt_autoalias

popt_autohelp

popt_tableend

};int main(int argc,char *argv)

; context = rpmcliinit(2,abc,optionstable);

if(context == null)

ts = rpmtscreate();

if(qva->qva_mode == 'q')

ec = rpmcliquery(ts,qva,(argv_const_t)poptgetargs(context));

}else if(qva->qva_mode == 'v')

ec = rpmcliverify(ts,qva,(argv_const_t)poptgetargs(context));

}else

ts = rpmtsfree(ts);

context = rpmclifini(context);

return ec;

}

編譯:gcc  main.c -o main  -i /usr/include/rpm  -lrpm -lrpmio -lpopt

執行:./main

2. rpm [options]的實現

這段**是活的,可以實現rpm -qa /-qf ......等一些基本功能的實現

#include #include #include #include #include static struct poptoption optionstable=,,,

,popt_autoalias

popt_autohelp

popt_tableend

};int main(int argc,char *argv)

ts = rpmtscreate();

if(qva->qva_mode == 'q')

ec = rpmcliquery(ts,qva,(argv_const_t)poptgetargs(context));

}else if(qva->qva_mode == 'v')

ec = rpmcliverify(ts,qva,(argv_const_t)poptgetargs(context));

}else

ts = rpmtsfree(ts);

context = rpmclifini(context);

return ec;

}

編譯: gcc main.c -o main -i /usr/include/rpm -lrpm -lrpmio -lpopt

執行: ./main -qa       (可以實現 rpm -qa 的功能,也可傳別的引數,讀者可自己試驗)

介面的實現

1 介面的實現 class 類名 implements 介面1,介面2,介面3 方法1 方法2 介面實現的注意事項 1 為介面中所有的方法提供具體的實現。2 必須遵守重寫的所有規則。重寫的規則 1 子類的重寫方法不能丟擲更大的異常 2 子類的重寫方法不能有更小的訪問範圍 父類 public void...

C 介面 介面的實現

c 定義了介面後,就要在子類中實現。c 中通常把子類和父類的關係稱為繼承,子類和介面的關係稱為實現。子類可以繼承乙個父類,可以實現多個介面。介面中不能定義建構函式,所以介面不能例項化。下面我們看例子 using system public inte ce ichoose public class t...

列舉裡面的介面的實現

列舉式乙個類,這個類,同樣也有類改由的功能,今天來說說列舉來實現介面。下面還是來看看 吧.首先我們定義乙個介面 介面裡面由兩個抽象方法.如下.public inte ce enuminte ce下滿我們來定義我們的列舉型別的類,分別由三個物件,分別有自己的構造方法.如下.public enum de...