System-Calls
UNIX 命令中的隱式系統呼叫
我一直在研究 UNIX 和系統呼叫,遇到了一個低級且棘手的問題。該問題詢問此命令呼叫了哪些系統呼叫:
grep word1 word2 > file.txt
我進行了一些研究,但無法在底層 UNIX 呼叫上找到大量資源。
但是,在我看來,答案是
open
(打開文件的文件描述符file.txt
),然後dup2
(將 of 更改為STDOUT
的grep
文件描述符open
),然後write
寫入STDOUT
ofgrep
(現在是 的文件描述符file.txt
) ,最後,關閉…close()
的文件描述符file.txt
但是,我不知道我是對的還是走在正確的道路上,有 UNIX 經驗的人可以在這個話題上給我啟發嗎?
在 Linux 中,您有
strace
:strace -f sh -c 'grep word1 file > file.txt'
這裡我們用
-f
tellstrace
來跟踪子程序。在 *BSD 中,您有
dtruss
(使用dtrace
底層):dtruss -f sh -c 'grep word1 file > file.txt'