#include <linux/unistd.h>
#include <linux/sysctl.h>
_syscall1(int, _sysctl, struct __sysctl_args *, args);
int _sysctl(struct __sysctl_args *args);
struct __sysctl_args {
        int *name;        /* º¯¼ö¸¦ °¡¸®Å°´Â integer vector */
        int nlen;         /* ÀÌ º¤ÅÍÀÇ ±æÀÌ*/
        void *oldval;     /* 0 ¶Ç´Â ¿¹Àü °ªÀ» ÀúÀåÇϱâ À§ÇÑ ÁÖ¼Ò*/
        size_t *oldlenp;  /* ¿¹Àü °ªÀ» À§ÇØ ÀÌ¿ëÇÒ¼ö ÀÖ´Â °ø°£,
                                          ¿¹Àü °ªÀÇ ½ÇÁ¦ Å©±â¿¡ ÀÇÇØ À§¿¡ ¾²¿©Áø´Ù.*/
        void *newval;     /* 0 ¶Ç´Â »õ·Î¿î °ªÀÇ ÁÖ¼Ò*/
        size_t newlen;    /* »õ·Î¿î °ªÀÇ Å©±â*/
};
ÀÌ ÇÔ¼ö´Â Æ®¸® ±¸Á¶¿¡¼ Ž»öÀ» Çϸç /proc/sys¾Æ·¡ÀÇ µð·ºÅ丮 Æ®¸®¿Í ºñ½ÁÇÏ´Ù. ±×¸®°í ¸¸ÀÏ ¿ä±¸µÈ ¾ÆÀÌÅÛÀÌ ¹ß°ßµÈ´Ù¸é ¸î¸î Àû´çÇÑ ·çƾµéÀÌ ÀÌ °ªÀ» Àаųª ¹ø°æÇϱâ À§Çؼ È£ÃâµÈ´Ù.
#include <linux/unistd.h>
#include <linux/types.h>
#include <linux/sysctl.h>
_syscall1(int, _sysctl, struct __sysctl_args *, args);
int sysctl(int *name, int nlen, void *oldval, size_t *oldlenp,
           void *newval, size_t newlen)
{
        struct __sysctl_args args={name,nlen,oldval,oldlenp,newval,newlen};
        return _sysctl(&args);
}
#define SIZE(x) sizeof(x)/sizeof(x[0])
#define OSNAMESZ 100
char osname[OSNAMESZ];
int osnamelth;
int name[] = { CTL_KERN, KERN_OSTYPE };
main(){
        osnamelth = SIZE(osname);
        if (sysctl(name, SIZE(name), osname, &osnamelth, 0, 0))
                perror("sysctl");
        else
                printf("This machine is running %*s\n", osnamelth, osname);
        return 0;
}
sysctl ½Ã½ºÅÛ ÄÝÀº Linux ¹öÀü 1.3.57ÀÌÈĺÎÅÍ Á¸ÀçÇÑ´Ù. À̰ÍÀº 4.4BSD¿¡ ±â¹ÝÀ» µÎ°í ÀÖ´Ù. ´ÜÁö ¸®´ª½º¸¸ÀÌ /proc/sys ¸¦ ¹Ý¿µÇϰí ÀÖÀ¸¸ç °´Ã¼ À̸§ ±¸Á¶µéÀº Linux¿Í BSD 4.4¿¡¼ ¼·Î ´Ù¸£´Ù. ±×·¯³ª, sysctl(2)ÇÔ¼öÀÇ ¼±¾ðÀº ¾çÂÊ ¸ðµÎ °°´Ù.