【发布时间】:2013-10-09 15:48:05
【问题描述】:
我正在阅读coreutils源码学习linux下的编程。
我发现在 ls.c、cat.c 等大多数程序中,它们在前几行调用宏函数 initialize_main()。所以我查看了 system.h 以找到实现:
/* Redirection and wildcarding when done by the utility itself.
Generally a noop, but used in particular for native VMS. */
#ifndef initialize_main
# define initialize_main(ac, av)
#endif
我不明白为什么要定义这样的宏,我不明白评论。
【问题讨论】:
-
如果您观察这些宏在文件中的使用位置和方式,您就会知道。
-
评论很好地解释了它“通常是noop,但特别用于本机VMS。”。所以在linux下,这是一个nop,什么都没有。 VMS 可能对参数处理做了一些不同的事情。 linux 不是虚拟机。
-
@CharlieBurns 非常感谢,现在知道了。
-
我不推荐 GNU coreutils 作为开始,因为它们包含各种针对晦涩和过时操作系统的解决方法。我个人从阅读 BSD 实用程序的源代码中学到了很多东西,这些实用程序在代码方面更加简洁(尽管它们有时使用 BSD 特定的 API,但你会发现这些)。
-
VMS 还存在吗?这些天似乎和 CP/M 一样重要。
标签: c linux gnu-coreutils