ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
HTML º¯È¯¹®¼
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> <chapter lang=ko> <!-- ÀÛ¼ºÀÚ : yundream --> <!-- ÀÛ¼ºÀÏ : 2004/02/25 --> <!-- ¿¬¶ôó : yundream@joinc.co.kr --> <!-- ÇÔ¼ö À̸§À» ÀÔ·ÂÇÕ´Ï´Ù --> <title>statfs(2)</title> <!-- ÀÌ°Ç ÇÔ¼ö¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ¼³¸íÀ̱¸¿ä --> <para> ÆÄÀÏ ½Ã½ºÅÛ Á¤º¸¸¦ °¡Á®¿Â´Ù. </para> <!-- ¿©±â¿¡ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÌ µé¾î°©´Ï´Ù --> <section> <title>»ç¿ë¹ý</title> <para> <screen> #include <sys/vfs.h> int statfs(const char *path, struct statfs *buf); int fstatfs(int fd, struct statfs *buf); </screen> </para> </section> <!-- ¿©±â¿£ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ¼³¸í ÀÌ µé¾î°©´Ï´Ù --> <section> <title>¼³¸í</title> <para> statfs()´Â ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ Á¤º¸¸¦ ¹ÝȯÇÑ´Ù. <emphasis>path</emphasis>´Â ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛ³» ÆÄÀÏÀÇ °æ·Î À̸§ÀÌ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀÇ Á¤º¸´Â <emphasis>buf</emphasis>°¡ °¡¸£Å°´Â °ø°£¿¡ ä¿öÁø´Ù. <emphasis>statfs</emphasis>±¸Á¶Ã¼´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù. <screen> struct statfs { long f_type; /* ÆÄÀÏ ½Ã½ºÅÛ Å¸ÀÔ(¾Æ·¡¿¡¼ º¸¿©ÁØ´Ù) */ long f_bsize; /* ÃÖÀûÈµÈ Àü¼Û ºí·° Å©±â */ long f_blocks; /* ÆÄÀÏ ½Ã½ºÅÛ³» ÃÑ µ¥ÀÌÅÍ ºí·°µé */ long f_bfree; /* ÆÄÀÏ ½Ã½ºÅÛ³» ¿©À¯ ºí·°µé */ long f_bavail; /* ºñ-½´ÆÛ À¯Àú¸¦ À§ÇÑ ¿©À¯ ºí·°µé */ long f_files; /* ÆÄÀÏ ½Ã½ºÅÛ³» ÃÑ ÆÄÀÏ ³ëµåµé */ long f_ffree; /* ÆÄÀÏ ½Ã½ºÅÛ³» ¿©À¯ ÆÄÀÏ ³ëµåµé */ fsid_t f_fsid; /* ÆÄÀÏ ½Ã½ºÅÛ ID */ long f_namelen; /* ÆÄÀÏ À̸§ÀÇ ÃÖ´ë ±æÀÌ */ long f_spare[6]; /* ³ªÁßÀ» À§ÇÑ ¿©À¯ºÐ */ }; </screen> ´ÙÀ½Àº ÆÄÀÏ ½Ã½ºÅÛ Å¸ÀÔÀÌ´Ù. <screen> linux/affs_fs.h: AFFS_SUPER_MAGIC 0xADFF linux/ext_fs.h: EXT_SUPER_MAGIC 0x137D linux/ext2_fs.h: EXT2_OLD_SUPER_MAGIC 0xEF51 EXT2_SUPER_MAGIC 0xEF53 linux/hpfs_fs.h: HPFS_SUPER_MAGIC 0xF995E849 linux/iso_fs.h: ISOFS_SUPER_MAGIC 0x9660 linux/minix_fs.h: MINIX_SUPER_MAGIC 0x137F /* orig. minix */ MINIX_SUPER_MAGIC2 0x138F /* 30 char minix */ MINIX2_SUPER_MAGIC 0x2468 /* minix V2 */ MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, 30 char names */ linux/msdos_fs.h: MSDOS_SUPER_MAGIC 0x4d44 linux/ncp_fs.h: NCP_SUPER_MAGIC 0x564c linux/nfs_fs.h: NFS_SUPER_MAGIC 0x6969 linux/proc_fs.h: PROC_SUPER_MAGIC 0x9fa0 linux/smb_fs.h: SMB_SUPER_MAGIC 0x517B linux/sysv_fs.h: XENIX_SUPER_MAGIC 0x012FF7B4 SYSV4_SUPER_MAGIC 0x012FF7B5 SYSV2_SUPER_MAGIC 0x012FF7B6 COH_SUPER_MAGIC 0x012FF7B7 linux/ufs_fs.h: UFS_MAGIC 0x00011954 linux/xia_fs.h: _XIAFS_SUPER_MAGIC 0x012FD16D </screen> Á¤ÀǵÇÁö ¾ÊÀº ÆÄÀϽýºÅÛÀÌ °Ë»öµÇ¾úÀ» °æ¿ì Çʵå´Â -1·Î ¼³Á¤µÈ´Ù. </para> <para> fstatfs()´Â ¿¸° ÆÄÀÏÁöÁ¤ÀÚ<emphasis>fd</emphasis>¸¦ »ç¿ëÇÑ´Ù´Â °ÍÀ» Á¦¿ÜÇϰí´Â statfs()¿Í µ¿ÀÏÇÏ´Ù. </para> </section> <!-- ÇÔ¼ö°¡ µÇµ¹·ÁÁÖ´Â °ªÀ̱¸¿ä --> <section> <title>¹Ýȯ°ª</title> <para> ¼º°ø½Ã 0ÀÌ ¸®Åϵǰí, ¿¡·¯°¡ ¹ß»ýÇϸé -1ÀÌ ¸®ÅϵȴÙ. </para> </section> <!-- ¿¡·¯°¡ ¹ß»ýÇßÀ»¶§ µÇµ¹·ÁÁÖ´Â °ªµéÀÔ´Ï´Ù --> <section> <title>¿¡·¯</title> <para> statfs(): <variablelist> <varlistentry> <term>ENOTDIR</term> <listitem> <para> pathÀÇ °æ·Î ¿ä¼Ò°¡ µð·ºÅ丮°¡ ¾Æ´Ï´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>ENAMETOOLONG</term> <listitem> <para> <emphasis>path</emphasis>°¡ ³Ê¹« ±æ´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>ENOENT</term> <listitem> <para> Ž»ö Çã°¡±ÇÀÌ <emphasis>path</emphasis>°æ·Î ¿ä¼Ò¿¡¼ °ÅºÎµÇ¾ú´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>ELOOP</term> <listitem> <para> ³Ê¹« ¸¹Àº »ó¡ ¿¬°áÀ»<emphasis>path</emphasis>ÇØ¼®½Ã¿¡ ¸¸³µ´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>EFAULT</term> <listitem> <para> <emphasis>buf</emphasis>³ª<emphasis>path</emphasis>°¡ À¯È¿ÇÏÁö ¾ÊÀº ÁÖ¼Ò¸¦ °¡¸®Å°°í ÀÖ´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>EIO</term> <listitem> <para> ÆÄÀÏ ½Ã½ºÅÛÀ» Àаųª ¾²´Â µ¿¾È I/O ¿¡·¯°¡ ¹ß»ýÇß´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>ENOMEM</term> <listitem> <para> ÀÌ¿ëÇÒ ¼ö ÀÖ´Â Ä¿³Î ¸Þ¸ð¸®°¡ ÃæºÐÇÏÁö ¾Ê´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>ENOSYS</term> <listitem> <para> <emphasis>path</emphasis>ÆÄÀÏ ½Ã½ºÅÛÀÌ statfs¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. </para> </listitem> </varlistentry> </variablelist> fstatfs(): <variablelist> <varlistentry> <term>EBADF</term> <listitem> <para> <emphasis>fd</emphasis>´Â À¯È¿ÇÑ ÆÄÀÏÁöÁ¤ÀÚ°¡ ¾Æ´Ï´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>EFAULT</term> <listitem> <para> <emphasis>buf</emphasis>°¡ À¯È¿ÇÏÁö ¾ÊÀº ÁÖ¼Ò¸¦ °¡¸®Å°°í ÀÖ´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>ENOSYS</term> <listitem> <para> <emphasis>path</emphasis>ÆÄÀÏ ½Ã½ºÅÛÀÌ statfs¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>EIO</term> <listitem> <para> ÆÄÀÏ ½Ã½ºÅÛÀ» Àаųª ¾²´Â µ¿¾È I/O ¿¡·¯°¡ ¹ß»ýÇß´Ù. </para> </listitem> </varlistentry> </variablelist> </para> </section> <!-- ¸¶Áö¸·À¸·Î ¿¡Á¦ ÀÔ´Ï´Ù --> <!-- ¿©±â¿¡´Â ¿ÏÀüÇÑ ¿¹Á¦°¡ µé¾î°¡ Àִµ¥, ±»ÀÌ ¿ÏÀüÇÑ ¿¹Á¦¸¦ ¸¸µéÇÊ¿ä ¾øÀÌ --> <!-- ÄÚµå ÀϺκи¸ ÀÛ¼ºÇؼ ¿Ã·ÁÁּŵµ µË´Ï´Ù --> <!-- "<", ">", "&" µîÀº º¯È¯ÇØ ÁÖ¼Å¾ß Çϴµ¥, ±ÍÂúÀ¸½Ã¸é :-) º¯È¯ ÇÏÁö ¾Ê --> <!-- ¾Æµµ µË´Ï´Ù. Á¦°¡ °Ë»ç ÇØ¼ ¿Ã¸®°Ú½À´Ï´Ù --> <!-- ¿¹Á¦¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» Àû¾îÁּŵµ µÇ±¸¿ä --> <section> <title>¿¹Á¦</title> <para> <screen> /* * ÆÄÀϽýºÅÛ Á¤º¸ ¾ò¾î¿À±â * /proc/mounts Á¤º¸¿Í statfs¸¦ ÀÌ¿ëÇÑ´Ù. */ #include <stdio.h> #include <string.h> #include <libgen.h> #include <sys/vfs.h> #include <sys/stat.h> #include <sys/types.h> const char *MMOUNT = "/proc/mounts"; struct f_size { long blocks; long avail; }; typedef struct _mountinfo { FILE *fp; // ÆÄÀÏ ½ºÆ®¸² Æ÷ÀÎÅÍ char devname[80]; // ÀåÄ¡ À̸§ char mountdir[80]; // ¸¶¿îÆ® µð·ºÅ丮 À̸§ char fstype[12]; // ÆÄÀÏ ½Ã½ºÅÛ Å¸ÀÔ struct f_size size; // ÆÄÀÏ ½Ã½ºÅÛÀÇ ÃÑÅ©±â/»ç¿ëÀ² } MOUNTP; MOUNTP *dfopen() { MOUNTP *MP; // /proc/mounts ÆÄÀÏÀ» ¿¬´Ù. MP = (MOUNTP *)malloc(sizeof(MOUNTP)); if(!(MP->fp = fopen(MMOUNT, "r"))) { return NULL; } else return MP; } MOUNTP *dfget(MOUNTP *MP) { char buf[256]; char *bname; char null[16]; struct statfs lstatfs; struct stat lstat; int is_root = 0; // /proc/mounts·Î ºÎÅÍ ¸¶¿îÆ®µÈ ÆÄƼ¼ÇÀÇ Á¤º¸¸¦ ¾ò¾î¿Â´Ù. while(fgets(buf, 255, MP->fp)) { is_root = 0; sscanf(buf, "%s%s%s",MP->devname, MP->mountdir, MP->fstype); if (strcmp(MP->mountdir,"/") == 0) is_root=1; if (stat(MP->devname, &lstat) == 0 || is_root) { if (strstr(buf, MP->mountdir) && S_ISBLK(lstat.st_mode) || is_root) { // ÆÄÀϽýºÅÛÀÇ ÃÑ ÇÒ´çµÈ Å©±â¿Í »ç¿ë·®À» ±¸ÇÑ´Ù. statfs(MP->mountdir, &lstatfs); MP->size.blocks = lstatfs.f_blocks * (lstatfs.f_bsize/1024); MP->size.avail = lstatfs.f_bavail * (lstatfs.f_bsize/1024); return MP; } } } rewind(MP->fp); return NULL; } int dfclose(MOUNTP *MP) { fclose(MP->fp); } int main() { MOUNTP *MP; if ((MP=dfopen()) == NULL) { perror("error"); return 1; } while(1) { while(dfget(MP)) { printf("%-14s%-20s%10lu%10lu\n", MP->mountdir, MP->devname, MP->size.blocks, MP->size.avail); } printf("=========================\n\n"); sleep(1); } } </screen> </para> </section> <section> <title>Âü°í¹®Çå</title> <para> <orderedlist> <listitem> <para> <ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_sms_ÇÁ·Î±×·¥_Á¦ÀÛ">SMS ÇÁ·Î±×·¥ Á¦ÀÛ</ulink> </para> </listitem> <listitem> <para> <ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/Code_C_dfget">µð½ºÅ© Á¤º¸ °¡Á®¿À±â</ulink> </para> </listitem> </orderedlist> </para> </section> </chapter> |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|