1. 程式人生 > >關於標準輸入,標準輸出,標準錯誤

關於標準輸入,標準輸出,標準錯誤

-a 內容 program 道理 printf 註意 自己 stack 開標

1. 為什麽我們程序直接使用printf或者write(0,...)就可以輸出內容,而不需要首先調用open,是因為我們的進程是shell的子進程,它直接從shell繼承了文件描述符。

2.假如需要我們程序自己打開標準輸入輸出的話,可以這樣int fd = open("/dev/tty", O_WRONLY);,需要註意的是fd的值可不一定就是0或者1,而是當前系統文件描述符未用的最小值,換句話說標準輸入/輸出/錯誤可不一定就是0/1/2。

3.為什麽write(0,...)也能輸出內容到屏上,按理標準輸出不是fd=1嗎?想想以WR方式打開一個普通文件,是不是也可以既讀又寫,跟此一個道理。

參照閱讀:

http://bbs.chinaunix.net/thread-1376698-1-1.html

http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=359433&page=1#pid2385375

https://stackoverflow.com/questions/7383803/writing-to-stdin-and-reading-from-stdout-unix-linux-c-programming

關於標準輸入,標準輸出,標準錯誤