ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : Code>C>dfget



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

  1. dfget
  2. µð½ºÅ© »ç¿ë Á¤º¸Ã¼Å©(¸®´ª½º)
  3. yundream
  4. Version 0.2
  5. 2004/02/06


¼³¸í

µð½ºÅ© Á¤º¸¸¦ Àоî¿É´Ï´Ù. ÆÄƼ¼Ç, ¸¶¿îÆ® ÆÄÀÏ, ÇÒ´çµÈ ºí·°°ú »ç¿ëÁßÀÎ ºí·°ÀÇ Å©±â¸¦ ¾ò¾î¿É´Ï´Ù. ½ÇÁ¦ dfÀ» ÅëÇØ¼­ ¾òÀ» ¼ö ÀÖ´Â Á¤º¸µéÀ» °¡Á®¿É´Ï´Ù.

/dev/mountsÁ¤º¸¿Í statfs()ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ À§ÀÇ Á¤º¸µéÀ» ¾ò¾î¿É´Ï´Ù.

»ç¿ë¹æ¹ý

MOUNTP *dfopen(); 
MOUNTP *dfget(MOUNTP *MP); 
int dfclose(MOUNTP *); 
 
  • dfopen : ÃʱâÈ­ ÇÔ¼ö, ÃʱâÈ­¿¡ ¼º°øÇÏ¸é ÆÄÆ¼¼Ç Á¤º¸¸¦ °¡¸£Å°´Â MOUNTP¸¦ ¸®ÅÏÇÑ´Ù.
  • dfget : ÆÄƼ¼Ç Á¤º¸¸¦ °¡Á®¿À¸ç ´õÀÌ»ó Á¤º¸°¡ ¾øÀ» °æ¿ì NULLÀ» ¸®ÅÏÇÑ´Ù. Á¤º¸°¡ ÀÖÀ» °æ¿ì MOUNTP ±¸Á¶Ã¼¸¦ ¸®ÅÏÇÑ´Ù.
  • dfclose : ÀÚ¿øÀ» ÇØÁ¦ÇÑ´Ù.

MOUNTP ±¸Á¶Ã¼´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù.
struct f_size 
{ 
    long blocks;  // ÇÒ´çµÈ ºí·° 
    long avail;   // »ç¿ë°¡´ÉÇÑ ºí·°  
}; 
 
typedef struct _mountinfo 
{ 
    FILE *fp;            // /proc/mounts¿¡ ´ëÇÑ ÆÄÀÏ Æ÷ÀÎÅÍ 
    char devname[80];    // ÀåÄ¡À̸§ 
    char mountdir[80];   // ¸¶¿îÆ® °æ·Î 
    char fstype[12];     // ÆÄÀϽýºÅÛ Á¾·ù 
    struct f_size size;   
} MOUNTP; 
 

#include "dfget.h" 
 
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); 
    } 
}    
 

ÄÚµå

#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; 
    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; 
    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); 
} 
 


º¯°æ»çÇ×

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.