关于Linux Shell函数与C函数()之间的关系

3
例如,我原以为shell中的ln命令是由C提供的link()和symlink()函数实现的,所以我检查了ln的源代码,但似乎它并没有使用它们。
1个回答

4
是的,许多Linux命令都是用C语言编写的;而且很多这些C程序可能会使用C库函数,比如link()symlink()。各种Linux shell(如sh、csh和bash)本身也是用C语言编写的,并且还使用C库调用。
然而... link()和symlink()都是POSIX兼容的包装函数,它们不是"标准C库"的一部分。因此,“ln”命令不使用它们。有关更多详细信息,请参见unistd.h
另请参阅C标准库包括什么

1
我发现“ln”使用symlinkat()和linkat()。 - han deng
@handeng,你应该将这个加到你的问题中。事实上,一个更好的问题可能是“为什么GNU命令行工具使用symlinkat和linkat而不是symlink和link?” - rici
1
如果在Linux/Glibc系统上运行使用了link() 等函数的C程序,如果存在XXXat系统调用版本,那么实际上可能会被调用。 - Shawn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接