私はLinuxプログラミングの初心者です。 Linuxでコマンドライン経由でシステムコールのリストを表示する方法は次のとおりです。
man syscalls
しかし、cライブラリ関数のリストを表示したいのですが、どうすればそれができますか? cライブラリ関数をリストするのに役立つコマンドはどれですか?また、システムコールとcライブラリ関数のマニュアルページはどこにありますか?ありがとうございました。
どのコマンドがcライブラリ関数をリストするのに役立ちますか?
標準Cライブラリ(GNU libc)で定義されているすべての関数をリストする1つの方法を次に示します。
nm -D /lib/$(uname -m)-linux-gnu/libc-*.so | grep -vw U | grep -v "_" | cut -d " " -f3
システムコールも実際のシステムコールをラップする関数であるため、システムコールも含まれることに注意してください。
システムコールとcライブラリ関数のマニュアルページはどこにありますか?
システムコールのマニュアルページは次のとおりです。
/usr/share/man/man2
ライブラリ関数のマニュアルページは次のとおりです。
/usr/share/man/man3
C
という名前のref
関数ヘッダーを表示するNiceパッケージがあります。詳細については、 man ref
を参照してください。 C
ライブラリ関数のリストを見つけることができる優れたデータベースがあります。
関数は、ファイル/usr/share/elvis/stubs/ansistub.c
にリストされています。関数を直接調べて機能を確認することも、必要に応じてフィルタリングすることもできます。
端末で次の大きな行を使用して、完全なリストを一度に表示できます。
cat /usr/share/elvis/stubs/ansistub.c | grep "^int\|^char\|^void\|^double\|^ldiv_t\|^unsigned\|^type\|^struct\|^FILE\|^size_t\|^time_t\|^long\|^clock\|^mbstowcs\|^div_t" | awk 'NR > 12' | less
次のような出力が得られます
void abort(void)
int abs(int num)
double acos(double cosvalue)
char *asctime(const struct tm *currtime)
double asin(double sinvalue)
void assert(int expression)
int atexit(void(*func)(void))
long int atol(const char *string)
....
または、リストをファイルmyCfunction.list
にコピーして、
cat /usr/share/elvis/stubs/ansistub.c | grep "^int\|^char\|^void\|^double\|^ldiv_t\|^unsigned\|^type\|^struct\|^FILE\|^size_t\|^time_t\|^long\|^clock\|^mbstowcs\|^div_t" | awk 'NR > 12' > myCfunction.list
それを使用するには、最初に以下のコマンドを使用してref
をインストールします。
Sudo apt-get install elvis-tools