A menos que você queira escrever um analisador de página, acho que é melhor apostar nele para criar um arquivo de texto e corrigi-lo manualmente. Comece com algo como:
$ 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
As primeiras 10 linhas que obtenho mostram uma taxa de sucesso de 80%; duas páginas não mencionam um arquivo de inclusão:
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>
Então, para ser realmente preguiçoso, use uma pequena função para pesquisar em seu arquivo, algo como
$ inc() { awk -F\t -e "/^ *$1/ "'{print $2}' /tmp/inc; }
$ inc fork
#include <unistd.h>
Tenha em atenção que algumas páginas de manual mencionam mais do que um ficheiro de cabeçalho, dependendo das funcionalidades ou da função utilizada nessa página. Por exemplo, consulte soquete (2).