|
|||||||
|
|
INTROSection: Linux Programmer's Manual (2)Updated: 22 May 1996 Index Return to Main Contents ̾Á°intro - ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÀâÌÀÀâÌÀ¤³¤Î¾Ï¤Ï Linux ¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤òµ½Ò¤·¤Æ¤¤¤ë¡£ Linux 2.0 ¤Ç¤Ï 164 ¸Ä¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬Â¸ºß¤¹¤ë¡£Ä¾ÀܸƤӽФ¹¤Û¤È¤ó¤É¤Î¾ì¹ç¡¢Ä¾ÀÜ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò¸Æ¤Ó½Ð¤¹É¬ÍפϤʤ¤¤¬¡¢ ¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ïɸ½à C ¥é¥¤¥Ö¥é¥ê¤ËɬÍפʴؿô¤¬¼ÂÁõ¤µ¤ì¤Æ ¤¤¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¡£½ñ¼°#include <linux/unistd.h>A _syscall macro desired system call ÀßÄꥷ¥¹¥Æ¥à¥³¡¼¥ë¤Ë´Ø¤·¤Æ¤½¤Î¥×¥í¥È¥¿¥¤¥×¤òÃΤ뤳¤È¤¬½ÅÍ×¤Ç ¤¢¤ë¡£°ú¤¿ô¤Î¸Ä¿ô¡¢¤½¤ì¤é¤Î·¿¡¢¤½¤·¤ÆÊÖ¤êÃͤη¿¤òÃΤé¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¼ÂºÝ¤Î»ÈÍѤˤ¢¤¿¤Ã¤Æ¤Ï¡¢¤è¤êÍÆ°×¤Ë¥·¥¹¥Æ¥à¤ò¸Æ¤Ó½Ð¤¹¤¿¤á¤Ë¼¡¤Î 6 ¸Ä¤Î ¥Þ¥¯¥í¤¬ÍѰդµ¤ì¤Æ¤¤¤ë¡£¤½¤Î·Á¼°¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë:
¤³¤Î¥Þ¥¯¥í¤Ï»ØÄꤷ¤¿°ú¤¿ô¤È ̾Á° ¤ò»ý¤Ä´Ø¿ô¤òÀ¸À®¤¹¤ë¡£ °ìö¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ë¤³¤Î _syscall() ¥Þ¥¯¥í¤¬Æ³Æþ¤µ¤ì¤ë¤È¡¢ ̾Á° ¤Ë¤è¤Ã¤Æ¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò¸Æ¤Ö¤³¤È¤¬¤Ç¤¤ë¡£ Îã#include <stdio.h> #include <linux/unistd.h> /* for _syscallX macros/related stuff */ #include <linux/kernel.h> /* for struct sysinfo */ _syscall1(int, sysinfo, struct sysinfo *, info); /* Ãí°Õ¡§ nroff ¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤«¤éľÀÜ¥³¥Ô¡¼¤¹¤ë¤È¤¤Ï ½ÐÎÏÎãcode error = 0 uptime = 502034s Load: 1 min 13376 / 5 min 5504 / 15 min 1152 RAM: total 15343616 / free 827392 / shared 8237056 Memory in buffers = 5066752 Swap: total 27881472 / free 24698880 Number of processes = 40 Ãí°Õ_syscall()¥Þ¥¯¥í¤Ï¥×¥í¥È¥¿¥¤¥×¤òÀ¸À®¤·¤Ê¤¤¡£¥æ¡¼¥¶¡¼¤Ï¼«Ê¬¤Ç ¥×¥í¥È¥¿¥¤¥×¤ò½ñ¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¡£ C++ ¥æ¡¼¥¶¡¼¤Î¾ì¹ç¤ÏÆÃ¤Ë½ÅÍפǤ¢¤ë¡£¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÏÀµ¤Î¥¨¥é¡¼¥³¡¼¥É¤Î¤ß¤Þ¤¿¤ÏÉé¤Î¥¨¥é¡¼¥³¡¼¥É¤Î¤ß¤ò ÊÖ¤¹¤³¤È¤¬Äê¤á¤é¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£ ¤½¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬¤É¤Î¤è¤¦¤Ê¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹¤«¤Ë¤Ä¤¤¤Æ³Îǧ¤¹¤ë ¤¿¤á¤Ë¤Ï¤½¤Î¥½¡¼¥¹¥³¡¼¥É¤òÆÉ¤àɬÍפ¬¤¢¤ë¡£ ¤¿¤¤¤Æ¤¤¤Î¾ì¹ç¡¢É¸½à¤Î¥¨¥é¡¼¥³¡¼¥É¤Ë´Ø¤·¤Æ¤Ï(Î㤨¤Ð -EPERM ¤Î¤è¤¦¤Ê) Éé¤ÎÃͤòÊÖ¤¹¡£ _syscall() ¥Þ¥¯¥í¤Ï¤½¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÊÖ¤êÃÍ r ¤¬Éé¤Ç¤Ê¤¤¾ì¹ç¡¢ ¤½¤ÎÃͤò¤½¤Î¤Þ¤ÞÊÖ¤¹¡£Éé¤Î¾ì¹ç¤Ë¤ÏÊÑ¿ô errno ¤Ë -r ¤òÀßÄꤷ¤Æ -1 ¤òÊÖ¤¹¡£ ³Æ¥¨¥é¡¼¥³¡¼¥É¤Ë´Ø¤·¤Æ¤Ï errno(3) ¤ò»²¾È¡£ ¤¤¤¯¤Ä¤«¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë (Î㤨¤Ð mmap ¤Ê¤É) ¤Ï 5 ¸Ä°Ê¾å¤Î°ú¤¿ô¤òÍ׵᤹¤ë¡£ ¤³¤¦¤¤¤Ã¤¿¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¥¹¥¿¥Ã¥¯¤Ë°ú¤¿ô¤ò¥×¥Ã¥·¥å¤·¡¢ ¤½¤Î°ú¤¿ô¤Î¤«¤¿¤Þ¤ê¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÅϤ·¤Æ½èÍý¤µ¤ì¤ë¡£ ¥·¥¹¥Æ¥à¥³¡¼¥ë¤òÄêµÁ¤¹¤ë¾ì¹ç¡¢¤½¤Î°ú¤¿ô¤Î·¿¤ÏÃÍÅϤ·(by-value)¤Ç¤¢¤ë¤« (¹½Â¤ÂΤΤ褦¤Ê½¸¹çŪ¤Ê¥Ç¡¼¥¿¤Î¾ì¹ç¤Ï)¥Ý¥¤¥ó¥¿ÅϤ·(by-pointer) ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ½àµò¤³¤Î¾Ï¤Ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê´ö¤Ä¤«¤Îά¹æ¤òÍÍ¡¹¤Ê Unix ¤Î¥¿¥¤¥×¤ò»Ø¼¨ ¤¹¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¡£
¥Õ¥¡¥¤¥ë/usr/include/linux/unistd.h´ØÏ¢¹àÌÜerrno(3)
Index | ||||||
|
|
|
Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account Document on this page is part of "Linuxinfor Man Pages in HTML Format: man2". See Index Page for more info about Authorship and Copyright. 1999-2008 Linuxinfor.com. No rights reserved. |