美文网首页
Linux mount() 编程

Linux mount() 编程

作者: louyang | 来源:发表于2017-12-15 18:14 被阅读67次

UNIX/Linux操作系统将所有文件管理成一棵倒过来的树,根是目录'\'。文件可以来自不同的设备,当一个新的设备要挂到这棵树上时,我们使用mount命令;反之我们使用umount命令。

在Linux shell中,我们可以这样做:

# mount -t ext3 /dev/vdd /opt3

# ls /opt3
dir_a  dir_b  lost+found

# umount /opt3

# ls /opt3
#

我们也可以用C语言中API mount()来实现上述功能:

# cat mount-exampe.c

#include <stdlib.h>    //exit(), system()
#include <stdio.h>     //printf()
#include <sys/mount.h> //mount()
#include <dirent.h>    //struct dirent,DIR,opendir(),readdir()
#include <string.h>    //strcmp()

void die(char *s)
{
    perror(s);
    exit(1);
}

#define TDIR "/opt4"

int main()
{
    char cmd[64];

    sprintf(cmd, "mkdir %s", TDIR);
    if (system(cmd) != 0)
    {
        die("cmd");
    }

    if (mount("/dev/vdd", TDIR, "ext3", 0, NULL) != 0)
    {
        die("mount()");
    }

    struct dirent * entry;
    DIR * dir;

    dir = opendir(TDIR);
    if (!dir)
    {
        die("opendir()");
    }

    while ((entry = readdir(dir)))
    {
        if (strcmp(entry->d_name, ".") == 0)
            continue;
        if (strcmp(entry->d_name, "..") == 0)
            continue;
        printf("%s ", entry->d_name);
    }

    printf("\n");
    closedir(dir);
    umount(TDIR);

    sprintf(cmd, "rm -rf %s", TDIR);
    if (system(cmd) != 0)
    {
        die("cmd");
    }
}
# gcc mount-example.c -o mount-example && ./mount-example
dir_a dir_b lost+found
#

相关文章

网友评论

      本文标题:Linux mount() 编程

      本文链接:https://www.haomeiwen.com/subject/bqerwxtx.html