Di mana manual Programmer untuk Fungsi C terbuka?

16

Saya menggunakan debian8 (jessie) dan saya pergi untuk mencari membaca halaman manual untuk terbuka. sebaliknya saya mendapat peringatan:

$ man 3 open
No manual entry for open in section 3
See 'man 7 undocumented' for help when manual pages are not available.

Saya sudah menginstal paket manpage-dev, jadi dimanakah programmer manpage (man 3) terbuka?

j0h
sumber
1
Anda juga dapat menggunakan apropos, atau man --names-onlydengan salah satu --regexatau --wildcard. Lihat man man.
CVn
Di C, openbukan fungsi, itu adalah panggilan sistem. Itu perbedaan yang luar biasa, tetapi relevansinya di sini adalah bahwa panggilan sistem ada di bagian 2, sedangkan fungsi perpustakaan di bagian 3.
mpez0

Jawaban:

18

Anda ingin man 2 openantarmuka C library, bukan man 3 open. Memang di manpages-dev(tidak manpage-dev). man 3 openmemberikan halaman manual Perl.

# Show the corresponding source groff file
man -w 2 open   
/usr/share/man/man2/open.2.gz

# Show which package this file belongs to
dpkg -S /usr/share/man/man2/open.2.gz
manpages-dev: /usr/share/man/man2/open.2.gz

# Or use dlocate to show which package this file belongs to
dlocate /usr/share/man/man2/open.2.gz
manpages-dev: /usr/share/man/man2/open.2.gz
Faheem Mitha
sumber
14

Bagian manual dijelaskan dalam manual itu sendiri. Masukkan man mansesi shell untuk melihat berbagai bagian dan konten umum:

   1   Executable programs or shell commands
   2   System calls (functions provided by the kernel)
   3   Library calls (functions within program libraries)
   4   Special files (usually found in /dev)
   5   File formats and conventions eg /etc/passwd
   6   Games
   7   Miscellaneous  (including  macro  packages  and  conventions), e.g.
       man(7), groff(7)
   8   System administration commands (usually only for root)
   9   Kernel routines [Non standard]

Bagian 2 menjelaskan panggilan sistem di mana bagian 3 mencakup rutinitas perpustakaan. Rutinitas perpustakaan yang hanya pembungkus untuk panggilan sistem juga dijelaskan di bagian 2.

JRFerguson
sumber
10

Hanya untuk mengklarifikasi alasan untuk ini lebih lanjut, halaman manual ada di bagian 2 karena itu adalah panggilan sistem (diimplementasikan lebih atau kurang secara langsung sebagai bagian dari kernel, daripada perpustakaan C).

Perbedaan ini bisa tampak agak sewenang-wenang, terutama dengan panggilan sistem yang lebih lama yang sekarang fungsi perpustakaan (garpu masih dalam bagian 2 meskipun sekarang menjadi pembungkus untuk klon), kecuali Anda sudah mengetahuinya. Secara umum, lihat di bagian 3 terlebih dahulu, lalu coba bagian 2 jika Anda tidak dapat menemukannya atau sepertinya itu tidak relevan. Juga, beberapa fungsi di bagian 2 adalah fungsi-fungsi linux-khusus internal atau usang yang tidak seharusnya dipanggil oleh program normal (misalnya getdents, gettid).

Anda juga dapat menginstal paket manpages-posix-dev untuk mendapatkan satu set manual yang ditulis dari perspektif portabel daripada berisi informasi spesifik linux. Dalam paket ini, semua halaman manual yang disediakan untuk fungsi C ada di bagian 3p.

Random832
sumber
4

Ketika saya tidak yakin di bagian apa halaman manual itu, saya menggunakan opsi -a.

   -a, --all
          By  default,  man  will  exit  after  displaying the most suitable manual page it finds.
          Using this option forces man to display all the manual pages with names that  match  the
          search criteria.

Dari contoh di halaman manual untuk pria:

   man -a intro
       Display,  in  succession, all of the available intro manual pages
       contained within the manual.  It is possible to quit between
       successive displays or skip any of them.
Ulric Eriksson
sumber
3

Dalam situasi ini, berguna untuk melihat seluruh daftar semua halaman yang tersedia dengan nama manual ini dengan menggunakan salah satu perintah:

$ man -k ^open$
$ apropos -r ^open$
$ man -f open
$ whatis open

Hasilnya akan sama:

open (1)             - start a program on a new virtual terminal (VT).
open (2)             - open and possibly create a file or device

Atau lihat konten semua halaman manual yang ada dan dengan demikian mengidentifikasi wajib:

$ man -a open
Rasul
sumber