#include <syscall.h> extern int syscall(int, ...); int my_close(int filedescriptor) { return syscall(SYS_close, filedescriptor); }
i386 ±¸Á¶¿¡¼´Â Çϵå¿þ¾î ·¹Áö½ºÅÍÀÇ °¹¼ö¶§¹®¿¡ ½Ã½ºÅÛ È£Ãâ ¹øÈ£ÀÌ¿Ü¿¡ 5°³ÀÇ ¾Æ±Ô¸ÕÆ®·Î ½Ã½ºÅÛ È£ÃâÀÌ Á¦ÇѵȴÙ. ¶Ç ´Ù¸¥ ±¸Á¶À§¿¡¼ ¸®´ª½º¸¦ »ç¿ëÇÑ´Ù¸é _syscall ¸ÅÅ©·Î¸¦ À§ÇØ Çϵå¿þ¾î°¡ ¾ó¸¶³ª ¸¹Àº ¾Æ±Ô¸ÕÆ®¸¦ Áö¿øÇÏ´ÂÁö ¶Ç´Â ¾ó¸¶³ª ¸¹Àº °³¹ßÀÚÀÇ ¼±ÅÃÀÌ Áö¿øµÇ´ÂÁö¸¦ ¾Ë¾Æ º¸±âÀ§ÇØ <asm/unistd.h>¸¦ üũÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ _syscall ¸ÅÅ©·ÎµéÀº syscall() ´ë½Å¿¡ »ç¿ëµÉ ¼ö ÀÖÁö¸¸, ÀÌ·¯ÇÑ ¸ÅÅ©·Î´Â ¶óÀ̺귯¸®¿¡ ÀÌ¹Ì Á¸ÀçÇÒ·±Áö ¸ð¸£´Â Full FunctionÀ¸·Î È®ÀåµÇ¹Ç·Î ÃßõÇÒ¸¸ÇÏÁö ¸øÇÏ´Ù.
#include <linux/unistd.h> _syscall1(int, close, int, filedescriptor);
_syscall1 ¸ÅÅ©·Î´Â close() ÇÔ¼ö¿Í °°Àº ¸ð½ÀÀ¸·Î È®ÀåµÈ´Ù. ±×·¯¹Ç·Î libc ¾È¿¡ close()¸¦ ÇÑ,µÎ¹ø ±×¸®°í ÇÁ·Î±×·¥ ¾È¿¡ Çѹø °¡Áø´Ù. ½Ã½ºÅÛ È£ÃâÀÌ ½ÇÆÐÇϸé syscall() À̳ª _syscall ¸ÅÅ©·ÎÀÇ ¹Ýȯ°ªÀº -1ÀÌ°í ¼º°øÇϸé 0 À̳ª 0º¸´Ù Å«°ªÀ» °®´Â´Ù. ½Ã½ºÅÛ È£ÃâÀÌ ½ÇÆÐÇß´Ù¸é ¹«½¼ ÀÏÀÌ ÀϾ´ÂÁö ¾Ë±âÀ§ÇØ Àü¿ªº¯¼öÀÎ errno¸¦ »ìÆìºÁ¶ó.
BSD¿Í SYS V¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ´ÙÀ½ÀÇ ½Ã½ºÅÛ È£ÃâµéÀº ¸®´ª½º¿¡¼ »ç¿ëÇÒ ¼ö ¾ø´Ù. :
audit(),auditon(),auditsvc(),fchroot(),getauid(),getdents(),getmsg(),mincore(),
poll(),putmsg(),setaudit(),setauid().
Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved
Email To:Webmaster ,
Another address
LAST UPDATE Nov 7,1997
Created Nov 7,1997