我是 Linux 编程的新手。我发现通过命令行查看 Linux 中系统调用列表的方法是:
man syscalls
但是现在我想查看 c 库函数列表,我该怎么做?哪个命令可以帮助我列出 c 库函数?还有一个问题,系统调用和 c 库函数手册页位于哪里?谢谢。
答案1
哪个命令可以帮助我列出 c 库函数?
以下是列出标准 C 库(GNU libc)中定义的所有函数的一种方法:
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
答案2
答案3
有一个很好的包可以显示C
函数头,名为ref
。要了解更多信息,请参阅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