写系统调用文件desciptor ZERO

Abh*_*ogi 1 c linux gcc

int main ( )
{
    char C[] = "Hello World";
    write(0,C,sizeof(C));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在上面的程序中,我写的是文件描述符ZERO,我认为默认情况下是STDIN ..那我为什么要在STDOUT输出?

shadyabhi@shadyabhi-desktop:~$ ./a.out
Hello Worldshadyabhi@shadyabhi-desktop:~$
Run Code Online (Sandbox Code Playgroud)

Tho*_*nin 7

标准输入用于读取,而不是写入.写入标准输入(或从标准输出读取)时发生的情况未指定.这里,标准输入和标准输出都指向应用程序运行的伪终端,终端仿真器没有注意使'0'描述符"只读".因此,内核不会阻止写入标准输入,并且它会像写入标准输出一样进入伪终端.

为了便于携带,您不应该依赖这种行为.