为什么 syslog 有两个不同的函数声明?

xml*_*lmx 2 c c++ linux overloading glibc

根据 Linux 手册页12,该函数syslog有两个不同的函数声明,如下所示:

int syslog(int type, char *bufp, int len);

void syslog(int priority, const char *format, ...);

但是,除了 C++,C 中没有函数重载。

如何解释事实?

Chr*_*n.K 5

一个syslog(2)在手册页 (*) 的第 2 ( )节中定义,因此是系统调用。另一个来自第 3 ( syslog(3))节,因此是一个 C 库函数。

因此,“技术上”它们是碰巧具有相同名称的不同功能(尽管它们当然是相关的,因为(3)使用的是(2))。

(*) 请参阅手册页部分