system call : mknod - Ư¼ö ¹× ÀÏ¹Ý ÆÄÀÏÀÇ »ý¼º
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

mknod

mknod - Ư¼ö ¹× ÀÏ¹Ý ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.

»ç¿ë¹ý

#include <sys/types.h> 
#include <sys/stat.h> 
#include <fcntl.h> 
#include <unistd.h> 
 
int mknod(const char *pathname, mode_t mode, dev_t dev); 
 

¼³¸í

mknod()´Â pathnameÀ» À̸§À¸·Î °¡Áö´Â ÆÄÀϽýºÅÛ ³ëµå - file, ÀåÄ¡ÆÄÀÏ È¤Àº named pipe - ¸¦ »ý¼ºÇÑ´Ù. mode¿Í dev ÆÄÀÏÀÇ ¸ðµå¿Í ¼ºÁúÀ» °áÁ¤Çϱâ À§Çؼ­ »ç¿ëÇÑ´Ù.

mode´Â »ý¼ºµÇ´Â ÆÄÀÏÀÇ ±ÇÇÑÀ» °áÁ¤ÇÑ´Ù. ÀÌ ±ÇÇÑÀº chmod()ÀÇ Ç¥±âÇü½ÄÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

ÆÄÀÏÀÇ Çü½ÄÀº S_IFREG, S_IFCHR, S_IFBLK, S_IFIFO, S_IFSOCKÁß Çϳª°¡ µÇ¾î¾ß ÇÑ´Ù.
  • S_IFREG : ÀÏ¹ÝÆÄÀÏ
  • S_IFCHR : ¹®ÀÚÆÄÀÏ
  • S_IFBLK : ºí·°ÆÄÀÏ
  • S_IFSOCK : Unix Domain Socket ÆÄÀÏ

¸¸¾à S_IFCHR À̳ª S_IFBLK¸¦ »ý¼ºÇϰíÀÚ ÇÑ´Ù¸é dev¸¦ ¸í½ÃÇØÁà¾ß ÇÑ´Ù. dev´Â »õ·Î »ý¼ºµÉ ÆÄÀÏÀÌ »ý¼ºµÉ ÀåÄ¡ÀÇ major number¿Í minor number¸¦ °¡Áø´Ù. dev°ªÀº ´ÙÀ½°ú °°ÀÌ °áÁ¤ÇÒ ¼ö ÀÖ´Ù.
  • (major number << 8) | (minor &0xff)

´ÙÀ½°ú °°ÀÌ ÆÄƼ¼ÇÀÌ ±¸¼ºµÇ¾î ÀÖ´Ù°í °¡Á¤Çغ¸ÀÚ.
# cat /proc/partitions 
major minor  #blocks  name 
 
   8        0  195360984 sda 
   8        1  180193041 sda1 
   8        2    1020127 sda2 
   8        3   14145232 sda3 
 
¿©±â¿¡¼­ sda3ÀÇ dev¹øÈ£´Â ´ÙÀ½°ú °°ÀÌ °è»êµÉ °ÍÀÌ´Ù. macro ·Î ¸¸µé¾îµÎ¸é ÆíÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù.
 (8 << 8) | (3 & 0xff) = 2051 
 
¸¸¾à sda3 ¿¡ myblk ¶ó´Â ºí·°ÆÄÀÏÀ» ¸¸µé±â ¿øÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ mknod ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
mknod("myblk", 0660, (8 << 8) | (3 & 0xff)); 
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.