2013-03-17 21 views
0

通常lseek不適用於stdinlseek是否在文件重定向上工作?

但是,如果我像這樣運行我的程序:

./a.out < filename

現在stdin是一個文件,而不是鍵盤。

請問lseek在那裏工作?

我可以做

lseek(0, -1, SEEK_CUR)

,並得到像

ungetc()同樣的效果?

回答

1

是的,lseek將改變尋道指針。不,它不等於ungetc()

fseek(stdin, -1, SEEK_CUR)更接近ungetc(),但仍然不完全相同。

+0

我可以使用'lseek'獲得'ungetc'的效果嗎? – Sam 2013-03-17 10:16:37

+0

不一般。你在尋找什麼'ungetc'的效果? – 2013-03-17 10:17:59

+0

我正在解析文本...我正在寫一個函數,如gettoken()從一個文件。但我正在做<或dup2並將文件重定向到stdin我正在讀取令牌字符,並且在解析標記時,最後一個字符(標記之後的一個字符)需要被推回...是否有任何系統調用等同於ungetc?因爲ungetc需要一個FILE * arg,並且我正在處理文件描述符...... – Sam 2013-03-17 10:23:16