mountシステムコールの使用例

調べてもあまり見つからなかったのでメモ。

コード

詳しくは manを参照してください。
特徴的なのは最後の引数ですかね。mountコマンドの '-o'オプションで与えるものを
そのまま指定するという形です。何を指定するかは第 3引数のファイルシステム
種類に依存しています。詳しくは "man 8 mount"を参照してください。


以下は VFATにフォーマットされた SDカードを /mnt/tmpにマウントする例です。
(第 1引数の srcは環境により異なる可能性がありますので注意してください)

#include <stdio.h>
#include <stdlib.h>
#include <sys/mount.h>

int main(void)
{
    int ret;
    int mount_flag = 0;

    ret = mount("/dev/mmcblk0p1", "/mnt/tmp", "vfat", mount_flag,
                "codepage=932,iocharset=utf8");
    if (ret == -1) {
        perror("mount:");
        exit(1);
    }

    printf("mount success!!\n");
    return 0;
}

利用例

上記のプログラムの実行には root権限が必要なります。

$ gcc sample_mount.c 
$ ls /mnt/tmp
$ sudo ./a.out
$ ls /mnt/tmp
test.txt
$ cat /mnt/tmp/test.txt 
hello world
$ sudo umount /mnt/tmp
$ ls /mnt/tmp
$