Rechercher une page de manuel
sysctl
Langue: ja
Version: 2007-06-01 (openSuse - 09/10/07)
Section: 2 (Appels système)
̾Á°
sysctl - ¥·¥¹¥Æ¥à¡¦¥Ñ¥é¥á¡¼¥¿¡¼¤òÆɤ߽ñ¤¤¹¤ë½ñ¼°
#include <unistd.h>
#include <linux/sysctl.h> int _sysctl(struct __sysctl_args *args);
ÀâÌÀ
_sysctl() ¥³¡¼¥ë¤Ï¥«¡¼¥Í¥ë¥Ñ¥é¥á¡¼¥¿¡¼¤òÆɤ߽ñ¤¤¹¤ë¡£Î㤨¤Ð¡¢ ¥Û¥¹¥È¥Í¡¼¥à¤äƱ»þ¤Ë¥ª¡¼¥×¥ó¤Ç¤¤ë¥Õ¥¡¥¤¥ë¤ÎºÇÂç¿ô¤Ê¤É¡£ °ú¤¿ô¤Ï°Ê²¼¤Î·Á¼°¤Ç¤¢¤ë¡£struct __sysctl_args { int *name; /* integer vector describing variable */ int nlen; /* length of this vector */ void *oldval; /* 0 or address where to store old value */ size_t *oldlenp; /* available room for old value, overwritten by actual size of old value */ void *newval; /* 0 or address of new value */ size_t newlen; /* size of new value */ };
¤³¤Î¥³¡¼¥ë¤Ï /proc/sys ¤Î²¼¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¦¥Ä¥ê¡¼¤Ë»÷¤¿ÌÚ¹½Â¤(tree structure)¤ò¸¡º÷¤¹¤ë¡£ ¤½¤·¤Æ¡¢Í׵ᤵ¤ì¤¿¹àÌܤ¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¤ÏŬÀڤʥ롼¥Á¥ó¤ò¸Æ¤Ó½Ð¤·¤Æ ÃͤòÆɤó¤À¤ê½¤Àµ¤·¤¿¤ê¤¹¤ë¡£
ÊÖ¤êÃÍ
À®¸ù¤·¤¿¾ì¹ç¤Ï _sysctl() ¤Ï 0 ¤òÊÖ¤¹¡£¼ºÇÔ¤·¤¿¾ì¹ç¡¢-1 ¤¬ÊÖ¤µ¤ì¡¢ errno ¤¬¤½¤Î¥¨¥é¡¼¤ò¼¨¤¹ÃͤËÀßÄꤵ¤ì¤ë¡£¥¨¥é¡¼
- EFAULT
- oldval ¤Ë NULL ¤Ç¤Ê¤¤ÃͤòÀßÄꤷ¤Æ¡¢°ÊÁ°¤ÎÃͤòÍ׵ᤷ¤Æ¤¤¤ë¤Î¤Ë¡¢ oldlenp ¤Ë¶õ¤¤¬¤Ê¤¤¡£
- ENOTDIR
- name ¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¡£
- EPERM
'¥Ç¥£¥ì¥¯¥È¥ê'¤Î¤É¤ì¤«¤Ë¸¡º÷µö²Ä¤¬¤Ê¤«¤Ã¤¿¤«¡¢ oldval ¤¬ 0 ¤Ç¤Ê¤¤¤Î¤ËÆɤ߹þ¤ßµö²Ä¤¬¤Ê¤«¤Ã¤¿¤«¡¢ newval ¤¬ 0 ¤Ç¤Ê¤¤¤Î¤Ë½ñ¤¹þ¤ßµö²Ä¤¬¤Ê¤«¤Ã¤¿¡£
½àµò
¤³¤Î¥³¡¼¥ë¤Ï Linux ÆÃͤǤ¢¤ê¡¢°Ü¿¢¤ò°Õ¿Þ¤·¤¿¥×¥í¥°¥é¥à¤Ç»ÈÍѤ·¤Æ¤Ï ¤¤¤±¤Ê¤¤¡£Îò»Ë
sysctl() ¥³¡¼¥ë¤Ï Linux ¤Î¥Ð¡¼¥¸¥ç¥ó 1.3.57 ¤«¤é¸ºß¤·¤Æ¤¤¤ë¡£ ¤³¤ì¤Ï 4.4BSD ¤ËͳÍ褷¤Æ¤¤¤ë¡£Linux ¤Ï /proc/sys ¤Ë¼Ì¤·(mirror)¤ò¤â¤Ã¤Æ¤ª¤ê¡¢¹àÌܤÎ̾Á°¤ÎÉÕ¤±Êý¤¬ Linux ¤È 4.4BSD ¤Ç¤Ï °Û¤Ã¤Æ¤¤¤ë¡£¤·¤«¤· sysctl(2) ´Ø¿ô¤ÎÀë¸À¤ÏξÊý¤ÇƱ¤¸¤Ç¤¢¤ë¡£¥Ð¥°
¥ª¥Ö¥¸¥§¥¯¥È¤Î̾Á°¤Ï¡¢¥«¡¼¥Í¥ë¤Î¥Ð¡¼¥¸¥ç¥ó¤´¤È¤ËÈó¾ï¤Ë°Û¤Ê¤Ã¤Æ¤¤¤ë¡£ ¡Ö¤³¤Î¤¿¤á¡¢¤³¤Î¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë¤È¤Ã¤Æ̵²ÁÃÍ¤Ê ¤â¤Î¤È¤Ê¤Ã¤Æ¤¤¤ë¡× ¤«¤ï¤ê¤Ë /proc/sys ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò»ÈÍѤ¹¤ë¤³¤È¡£Á´¤Æ¤Î²Äǽ¤Ê¹àÌܤ¬Àµ³Î¤Ëµ½Ò¤µ¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£
º£¤Î¤È¤³¤í /proc/sys/kernel/ostype ¤Ë½ñ¤¹þ¤à¤³¤È¤Ç¥ª¥Ú¡¼¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤òÊѤ¨¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£
Îã
#define _GNU_SOURCE #include <unistd.h> #include <sys/syscall.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <linux/sysctl.h> int _sysctl(struct __sysctl_args *args ); #define OSNAMESZ 100 int main(void) { struct __sysctl_args args; char osname[OSNAMESZ]; size_t osnamelth; int name[] = { CTL_KERN, KERN_OSTYPE }; memset(&args, 0, sizeof(struct __sysctl_args)); args.name = name; args.nlen = sizeof(name)/sizeof(name[0]); args.oldval = osname; args.oldlenp = &osnamelth; osnamelth = sizeof(osname); if (syscall(SYS__sysctl, &args) == -1) { perror("_sysctl"); exit(EXIT_FAILURE); } printf("This machine is running %*s\n", osnamelth, osname); exit(EXIT_SUCCESS); }
Ãí°Õ
glibc ¤Ï¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤ËÂФ¹¤ë¥é¥Ã¥Ñ¡¼´Ø¿ô¤òÄ󶡤·¤Æ¤¤¤Ê¤¤¡£ syscall(2) ¤ò»È¤Ã¤Æ¸Æ¤Ó½Ð¤¹¤³¤È¡£´ØÏ¢¹àÌÜ
proc(5)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre