BASHからC関数のヘッダーを取得する

BASHからC関数のヘッダーを取得する

与えられたC関数に必要なヘッダを取得したいと思います。たとえば、何を使うべきかを知りたいときに入力すると、fork()それman forkが何であるかを確認できます#include <unistd.h>。しかし、私はこれを画面を見ずに「自動的に」実行したいと思います。 )を使用して出力をファイルにリダイレクトして、ヘッダーを自動的に挿入できます。どうすればいいですか?

ベストアンサー1

マンページパーサーを作成したくない場合は、テキストファイルを作成して手動で変更することが最善の選択だと思います。次のように起動します。

$ 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%の成功率を示しました。インクルードファイルへの言及がない2つのページがありました。

         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)を参照してください。

おすすめ記事