Á¶°¢ ÄÚµå : µð½ºÅ© Å©±â ¾Ë¾Æ³»±â
ÃÑ ÆäÀÌÁö ¼ö : 3224

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



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

GetDisk Size

ioctl()À» ÀÌ¿ëÇØ¼­ DiskÀÇ Å©±â¸¦ ¾ò¾î¿À´Â °£´ÜÇÑ ÇÔ¼ö, Linux ¿î¿µÃ¼Á¦¿¡¼­¸¸ Å×½ºÆ® µÇ¾ú´Ù.

¿øº» ÄÚµå

#include <stdlib.h> 
#include <stdio.h> 
#include <fcntl.h> 
#include <unistd.h> 
#include <linux/fs.h> 
#include <sys/time.h> 
#include <sys/ioctl.h> 
 
int getdevsize(char *devname) 
{ 
  int fd; 
  int blcks; 
  int sects; 
  fd = open(devname, O_RDONLY); 
  if (fd < 0) 
  { 
    perror("error"); 
    return -1; 
  } 
 
  ioctl(fd, BLKGETSIZE, &blcks); 
  ioctl(fd, BLKSSZGET, §s); 
 
  close(fd); 
  return (blcks/1024) * sects; 
} 
 

»ç¿ë¹æ¹ý

int main(int argc, char **argv) 
{ 
  printf("%d\n", getdevsize(argv[1])); 
}    
 

Ãß°¡»çÇ×

¸ðµç ÀåÄ¡¸¦ ÀÚµ¿À¸·Î °Ë»çÇÏ°Ô ÇÒ ¼öµµ ÀÖ´Ù. À̰æ¿ì /proc/devices¸¦ Àо ºí·°ÀåÄ¡ÀÇ ¸ñ·ÏÀ» ¸¸µç´ÙÀ½, ÇØ´çÇÏ´Â ÀåÄ¡ÀÇ /procÁ¤º¸¸¦ Àоîµé¿©¾ß ÇÑ´Ù. ¿¹¸¦µé¾î ideºí·°ÀåÄ¡¶ó¸é /proc/ide, scsi¶ó¸é /proc/scsiÀÇ ÇÏÀ§µð·ºÅ丮 Á¤º¸¸¦ Àоî¾ß ÇÑ´Ù.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.