c언어 mount()함수 문제입니다.

rongs_의 이미지

linux에서 usb를 인식하고 mount하여 사용하려고 합니다.

c source에서 mount()를 이용하여 usb를 mount 하였는데요

mount가 되긴 하는데 반쪽짜리 mount가 되어버립니다.
ex)mount("/dev/sda1", "/mnt/USB", "vfat",0, "shortname=mixed");

cat /proc/mounts를 하면 usb가 인식한 것이 뜨는데

cat /etc/mtab을 하면 usb 인식한 부분이 안뜹니다.

찾아보니 mount()는 /etc/mtab에 기록이 안된다는 것을 보긴 했는데요...

여튼

실제로 mount한 폴더를 가보면 mount가 되어있긴 합니다만

df를 하거나 fdisk -l를 하면 usb mount결과가 뜨질 않네요 ㅠㅠ

지금 필요한게 usb 전체 크기와 사용 크기 사용 %를 df를 이용해서 불러오게 하였는데

df /dev/sda1 를 치면

can't find mount point라고 나옵니다..ㅠㅠㅠㅠㅠㅠ

무슨 문제가 있는 걸까요...

*다른 보드에선 mount가 잘되는데 이 보드에서만 이상하게 mount()를 쓰면 저리 되네요
*system()를 이용하여 mount command를 날리면 잘만 됩니다...

ymir의 이미지

/etc/mtab 은 수동으로 업데이트 해줘야 할 겁니다.

#include <mntent.h>
 
FILE *setmntent(const char *filename, const char *type);
struct mntent *getmntent(FILE *fp);
int addmntent(FILE *fp, const struct mntent *mnt);
int endmntent(FILE *fp);

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』