日期:2014-05-16  浏览次数:20695 次

菜鸟又来了。。
C/C++ code

int main()
{
    char buf[] = "hello world\n";
    close(1);
    if(write(STDIN_FILENO,buf,12) != 12)
    {
    printf("write error!\n");
    exit(1);
    }
    return 0;
}


如代码所示,我关闭了标准输出,然后往标准输入写了一条信息,为什么运行时这条信息还是会打印出来,请大神们帮帮忙!!!

------解决方案--------------------
谁告诉你是在标准输出打印东西了,描述符1关联终端,所以写1就会显示在终端上。

描述符0也关联终端,是用来读取终端输入的,如果你向它写,显示在屏幕上又有何不可?就好像是你敲进去的一样,是一样的道理。 都说了这个行为是特殊的,你非要问为什么不如有空多读几行书学点关键的。