manpage ของโปรแกรมเมอร์อยู่ที่ไหนสำหรับฟังก์ชั่น C แบบเปิด?


16

ฉันใช้ debian8 (เจสซี) และฉันไปหาอ่าน manpage เพื่อเปิด ฉันได้รับคำเตือนแทน:

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

ฉันได้ติดตั้งแพ็กเกจ manpage-dev ดังนั้นโปรแกรมเมอร์ manpage (man 3) สำหรับเปิดอยู่ที่ไหน


1
นอกจากนี้คุณยังสามารถใช้aproposหรือman --names-onlyกับหนึ่งหรือ--regex ดู--wildcard man man
CVn

ใน C openไม่ใช่ฟังก์ชัน แต่เป็นการเรียกระบบ นั่นคือความแตกต่างทางความคิด แต่ความเกี่ยวข้องที่นี่คือการเรียกของระบบอยู่ในส่วนที่ 2 ในขณะที่ฟังก์ชั่นห้องสมุดอยู่ในส่วนที่ 3
mpez0

คำตอบ:


18

คุณต้องการman 2 openสำหรับอินเตอร์เฟซห้องสมุด C man 3 openไม่ มันมีอยู่ในmanpages-dev(ไม่manpage-dev) man 3 openให้หน้าคู่มือ 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

14

ส่วน manpage อธิบายไว้ใน manpages ด้วยตนเอง เข้าman manสู่เซสชันของเชลล์เพื่อดูส่วนต่างๆและเนื้อหาทั่วไป:

   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]

ส่วนที่ 2 อธิบายการเรียกของระบบโดยที่ส่วนที่ 3 ครอบคลุมถึงรูทีนไลบรารี รูทีนไลบรารีที่เรียบง่ายสำหรับการเรียกระบบถูกอธิบายไว้ในส่วนที่ 2 เช่นกัน


10

เพียงชี้แจงเหตุผลสำหรับสิ่งนี้เพิ่มเติม manpage อยู่ในส่วนที่ 2 เนื่องจากเป็นการเรียกระบบ (นำไปใช้โดยตรงหรือมากขึ้นซึ่งเป็นส่วนหนึ่งของเคอร์เนลแทนที่จะเป็นไลบรารี C)

ความแตกต่างนี้ดูเหมือนจะค่อนข้างไร้เหตุผลโดยเฉพาะอย่างยิ่งกับการเรียกของระบบเก่าที่ตอนนี้ฟังก์ชั่นห้องสมุด (แยกยังคงอยู่ในส่วนที่ 2 แม้ว่าตอนนี้จะเป็น wrapper สำหรับการโคลน) เว้นแต่คุณจะรู้แล้ว โดยทั่วไปให้ดูในส่วนที่ 3 ก่อนจากนั้นลองส่วนที่ 2 หากคุณหาไม่พบหรือดูเหมือนว่ามันอาจจะไม่เกี่ยวข้องกัน นอกจากนี้บางฟังก์ชั่นในส่วนที่ 2 เป็นฟังก์ชั่นเฉพาะสำหรับลินุกซ์ภายในหรือล้าสมัยที่ไม่ควรเรียกใช้โดยโปรแกรมปกติ (เช่น getdents, gettid)

คุณยังสามารถติดตั้งแพ็กเกจ manpages-posix-dev เพื่อรับชุด manpages ที่เขียนจากมุมมองแบบพกพาแทนที่จะบรรจุข้อมูลเฉพาะ linux ในแพ็คเกจนี้ manpages ทั้งหมดที่มีให้สำหรับฟังก์ชั่น C จะอยู่ในส่วนที่ 3p


4

เมื่อฉันไม่แน่ใจใน manpage ที่แน่นอนในส่วนใดฉันจะใช้ตัวเลือก -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.

จากตัวอย่างใน manpage สำหรับ man:

   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.

3

ในสถานการณ์นี้มีประโยชน์ในการดูรายการทั้งหมดของหน้าที่มีอยู่ทั้งหมดพร้อมชื่อ manpage นี้โดยใช้คำสั่งอย่างใดอย่างหนึ่ง:

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

ผลลัพธ์จะเหมือนกัน:

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

หรือดูเนื้อหาของ manpages ที่มีอยู่ทั้งหมดและระบุสิ่งที่ต้องการ:

$ man -a open
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.