问题描述
我使用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;
}
解决方法
要写入的第一个参数是文件描述符,它是一个整数。这是本机Unix I / O。
docker exec -it airq_influxdb_1 ls -la /etc/ssl
是一个旨在与C库I / O例程一起使用的对象。它是指向内部stdout
对象的指针。它不是整数。
FILE
表示其他含义。我们经常使用它来指代“标准输出”文件描述符的Unix概念,该概念的确为1。但这并不意味着任意编程语言中的“ stdout”都等同于1。语言运行时需要哪种机制来处理输出。