将系统调用写入文件描述符ZERO

时间:2010-04-14 16:26:24

标签: c linux gcc

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

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

shadyabhi@shadyabhi-desktop:~$ ./a.out
Hello Worldshadyabhi@shadyabhi-desktop:~$

1 个答案:

答案 0 :(得分:7)

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

为了便于携带,你不应该依赖这种行为。