C
從 BASH 中獲取 C 函式的標頭
我想獲取給定 C 函式所需的標頭 - 例如,當我想查看要使用時要包含的內容時
fork()
,我可以輸入man fork
並查看它是#include <unistd.h>
. 但是,我想“自動”執行此操作(無需我看螢幕),因此我可以將輸出重定向到文件以自動插入標題。我怎樣才能做到這一點?
除非您想編寫聯機幫助頁解析器,否則我認為最好的辦法是建構一個文本文件並手動修復它。從以下內容開始:
$ ls /usr/share/man/man2 | sed 's/\.2.*//' \ | while read F do I=$(man $F | grep '#include'| head -1 | sed 's/>.*$/>/') printf '%15s:\t%s\n' $F "$I" done
我得到的前 10 行顯示成功率為 80%;有兩頁沒有提到包含文件:
accept: #include <sys/types.h> accept4: #include <sys/types.h> access: #include <unistd.h> acct: #include <unistd.h> add_key: #include <keyutils.h> adjtimex: #include <sys/timex.h> afs_syscall: alarm: #include <unistd.h> alloc_hugepages: arch_prctl: #include <asm/prctl.h>
然後,真的很懶,使用一個小函式來搜尋你的文件,比如
$ inc() { awk -F\\t -e "/^ *$1/ "'{print $2}' /tmp/inc; } $ inc fork #include <unistd.h>
請注意,某些手冊頁會提到多個標頭檔,具體取決於功能或使用該頁面上的哪個功能。例如,請參見套接字 (2)。