在C

2010-07-17 75 views
3

底層API重定向標準輸出是否有重定向與底層API標準輸出的方式......有沒有發現一個函數或方法來真正做到這一點....在C

回答

3

dup系統調用應該讓你重定向標準輸出,如this example所示。

freopen也可以,如果你重定向到一個文件,但dup也可以使用 與管道和插座。

+0

是的!瘋狂的觸摸輸入技巧FTW! – 2010-07-17 00:18:14

1

您可以使用freopen()將其重定向到一個文件。

+0

不是不低的水平其實dup複製的工作原理感謝 – Necronet 2010-07-17 00:30:13

1

您可以使用freopen()將stdout重定向到文件。如果您使用的是類似POSIX的系統,則可以使用close(),dup()open(),但它們可以使用文件描述符而不使用FILE。

3

我相信dup2(fd,1)會這樣做,使用open()打開fd後。

+1

如果你有一個變量'FILE * f',你可以用'fileno(f)'得到fd。像這樣:'dup2(fileno(f),1)'。 – bstpierre 2010-07-17 00:30:45

+0

謝謝,從來不知道如何混淆'FILE *'和常規'fd'。我認爲將它們混合在I/O中是災難的祕訣? (即'FILE *'函數不知道你對'fd'的低級訪問) – mvds 2010-07-17 08:17:59