0

阅读有关函数popen的信息。

它在标头stdio.h(标准标头)中,它返回FILE*(标准 IO 结构,与 Unix 函数不同unistd.h),但我在任何 C 标准参考网站上都找不到它。

那么它是标准的,还是某种 GCC 扩展?它是什么?

4

1 回答 1

2

从您链接的手册页:

CONFORMING TO         top
       POSIX.1-2001, POSIX.1-2008.

       The 'e' value for type is a Linux extension.

它是POSIX标准中定义的函数。type的e值是一个 linux 扩展。

popen 是标准的 C 函数吗?

No.popen不是标准的 C 函数,这意味着它没有在C 标准中定义。

那么它是标准的,还是某种 GCC 扩展?它是什么?

这是一个标准的 POSIX 函数。它不是 GCC 扩展。它是一个函数。

那为什么它在 stdio.h 而不是 unistd.h 或其他什么?

popen声明在包含 POSIX 兼容系统后可见stdio.h,因为 POSIX 标准是这样说的。(为什么不是posix/stdio.h或喜欢sys/stdio.h它主要是出于历史原因。每个系统都只使用stdio.h. )

于 2019-04-28T09:06:46.687 回答