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

问题描述

我使用write标头使用unistd.h系统调用将文本发送到stdout。 AFAIK, 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表示:标准输出值标准输出。其值为1。

解决方法

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

docker exec -it airq_influxdb_1 ls -la /etc/ssl是一个旨在与C库I / O例程一起使用的对象。它是指向内部stdout对象的指针。它不是整数。

在其他情况下,

FILE表示其他含义。我们经常使用它来指代“标准输出”文件描述符的Unix概念,该概念的确为1。但这并不意味着任意编程语言中的“ stdout”都等同于1。语言运行时需要哪种机制来处理输出。