C

從 BASH 中獲取 C 函式的標頭

  • February 17, 2016

我想獲取給定 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)。

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