是popen标准C功能吗?

问题描述 投票:0回答:1

阅读有关函数popen

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

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

c unix process c-standard-library
1个回答
2
投票

从您链接的手册页:

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.hsys/stdio.h它主要是出于历史原因。每个系统只使用stdio.h。)

© www.soinside.com 2019 - 2024. All rights reserved.