这是第一个4K大小的程序。
其中有一段宏
#ifdef HAVE_SETHOSTNAME
if (argc == 2)
{
int err;
/* Set hostname to argv[1]. */
err = sethostname (argv[1], strlen (argv[1]));
if (err != 0)
error (EXIT_FAILURE, errno, _("cannot set hostname to `%s'"), argv[1]);
exit (EXIT_SUCCESS);
}
#else
if (argc == 2)
error (EXIT_FAILURE, 0,
_("cannot set hostname; this system lacks the functionality"));
#endif
我开始没看到宏,心想,你对argc==2不是重复了吗,前面已经设置了,就已经退出程序了,即后面一段程序不应该执行到。后来,看到有宏。
我查看《Linux中文man在线手册(Linux公社整理www.linuxidc.com)》这个文档,发现参数很多,但显示4.5.1程序中没那么多,因为程序中没有选项的处理,我做了一次编译,加上一句打印语句,再编译,再本地执行。果然如我所想。
程序中关键的处理,就是下面一句:
hostname = xgethostname ();