我提前道歉,如果這是一個愚蠢的問題,但更深層的我鑽研它越糊塗的我。我自學C,最近一直在研究文件「open」的相關函數和宏,以便更好地理解究竟發生了什麼。bash使用什麼來打開/執行argv [0]?
所以,我的愚蠢的問題是,運行Centos的6.6和使用Bash shell的系統,究竟打開的argv [0]執行程序的情況下從命令提示符調用呢?
我已經嘗試過(我認爲被稱爲)攔截程序,並通過LD_PRELOAD指令導出共享對象文件,並且可以跟蹤至少一些調用「open」和「open64」。
我使用的調試樣式打印語句給我打開的文件名,但我注意到從命令行(我假定爲argv [0])調用的程序不會顯示爲被引用通過這些之一。
這使我開始通過慶典源苦讀,並沒有得到任何實際進展。
我倒是十分欣賞什麼我可能需要尋找並在任何指針?我已經grep'ed上的argv,argv(包含主(,execev,IOCTL和fcntl,一派搜查留言板,但我不會取得進展。
我倒是十分欣賞這個任何意見或指針。
'exec *'函數族是你想要跟蹤的。執行一個文件並打開它是兩件完全不同的事情。 – Mat 2015-02-07 20:05:51
shell'fork'是一個新進程和'exec'文件,所以它根本不涉及'open'。 – 2015-02-07 20:06:29
函數的'exec *()'系列負責讀取指定爲第一個參數的文件。您不會看到單獨的用戶級別的打開操作;它由內核在內部處理。 – 2015-02-07 21:29:49