Function

在 unix 中尋找函式

  • December 30, 2014

我試圖從 Unix 版本 6中理解seek(2) 函式。

這個例子:

seek(0,0,2)

所以第一個參數是文件描述符。0 將是標準輸入。第二個參數是偏移量,為0。第三個參數根據手冊頁告訴我們“指針設置為文件大小加上偏移量。

**但你為什麼要這樣做?**為什麼要指向文件後?

該行來自原始碼

seek(0, 0, 2)跳過為文件描述符 0 緩衝的所有數據。因此,在此命令之後,從該文件描述符的下一次讀取將不會讀取緩衝的任何內容。

我認為,如果您檢查程式碼並了解實際目的是什麼,您就會明白,即使文件描述符 0 通常是標準輸入,但該程序僅在它是通過該文件描述符讀取的腳本的一部分時才真正有用。

例如,看看下面的腳本:

goto
echo "hello"

沒有任何參數的goto將觸發搜尋。

如果沒有seek(0, 0, 2)aftergoto命令退出,腳本仍然會執行echo "hello"命令,因為命令的呼叫者goto只是要從腳本中讀取下一個命令。

引用自:https://unix.stackexchange.com/questions/176264