阅读有关函数popen。
它位于标题stdio.h
(标准标题)中,它返回FILE*
(标准IO结构,与unistd.h
的Unix函数不同),但我无法在任何C标准参考网站上找到它。
它是标准的,还是某种GCC扩展?它是什么?
从您链接的手册页:
CONFORMING TO top
POSIX.1-2001, POSIX.1-2008.
The 'e' value for type is a Linux extension.
它是POSIX标准中定义的函数。而类型的e
值是linux扩展。
是popen标准C功能吗?
没有.popen
不是标准的C函数,这意味着它没有在C standard中定义。
它是标准的,还是某种GCC扩展?它是什么?
它是标准的POSIX功能。它不是GCC扩展。这是一个功能。
那么为什么它在stdio.h中而不是在unistd.h中呢?
在POSIX兼容系统上包含popen
后,可以看到stdio.h
声明,因为POSIX标准是这样说的。 (为什么它不是posix/stdio.h
或sys/stdio.h
它主要是出于历史原因。每个系统只使用stdio.h
。)