什么是POSIX?我已阅读维基百科的文章,每次遇到这个词时我都会阅读它.事实是,我从来没有真正理解它是什么.
任何人都可以通过解释"对POSIX的需求"向我解释一下吗?
mktime的手册页没有提到mktime的线程安全性,但它确实提到了这看起来像线程不安全:
调用mktime()还会将外部变量tzname设置为有关当前时区的信息.
我知道在Linux上mktime调用tzset来设置tzname,这是一个char*[]:
extern char*tzname [2];
和tzset将读取环境变量TZ和文件/ etc/localtime.因此,除非mktime使用互斥锁来保护所有这些操作,否则我无法看到它是如何保证线程安全的.
我知道C语言是ISO标准,并且我从Wikipedia可以看到该标准包含29个头文件,并且符合这些头文件的C应用程序在理论上是“可移植的”。
但是,实际上,我最近尝试在一个简单的C HTTP服务器上做一个教程,该服务器使用不属于C标准的头文件。因此,在这种情况下,我能想到的最简单的应用程序-包含单个int main(void)功能且少于100行的C应用程序,其目的是侦听网络接口,是否超出了C标准?
在这种情况下,C语言规范和POSIX规范(假设我正在为Linux编写应用程序)之间有什么关系?
据我所知,“ man7.org”提供了C头文件的列表,这些头文件定义了所有Unix / Linux系统(我假设这与“ POSIX”相同)的API,以及Linux平台的系统调用列表。
这包括82个头文件,其中29个C标准库头是其中的一个子集,以及大约10000个系统调用(至少我假设此列表中不是头文件的所有内容都是系统调用)。
我假设任何用C编写的合理功能的程序都将超出标准库,并使用OS特定的头文件。说对在Linux上运行的应用程序进行编程实际上就是“ POSIX编程”,是否会更准确?
我猜也可能会坚持使用标准库,并为跨POSIX和非POSIX系统(包括特定于平台的汇编例程)的可移植逻辑实现定义自定义头文件。这曾经做过吗?