使用 stdout 作为 write 的第一个参数

use stdout as the first argument of write

我使用 write 系统调用使用 unistd.h header 将文本发送到标准输出。据我所知,stdout 的数值是 1。那么为什么我不能使用 stdout 而不是 1 作为 write 的第一个参数?

#include <unistd.h> // write
#include <stdio.h> // stdout

int main(void)
{
    write(stdout, "This will be output to standard out\n", 36);
    return 0;
}

Google表示:标准输出值stdout。它的值为 1.

要写入的第一个参数是 文件描述符,它是一个整数。这是原生 Unix I/O.

stdout 这是一个旨在与 C 库 I/O 例程一起使用的对象。它是指向内部 FILE 对象的指针。不是整数。

stdout 在其他上下文中表示其他含义。我们经常用它来指代 'standard output' 文件描述符的 Unix 概念,它确实是 1。但这并不意味着 'stdout' 在任意编程语言中等价于 1。而是,它将是语言运行时处理输出所需的任何机制。