c - C程序挂载SD卡

标签 c linux embedded-linux

我的环境:Xilinx/Zynq Soc 上的 Petalinux

我正在尝试安装 microSD 卡。 我确认以下代码可以在 root 登录下挂载 SD。

#include <stdio.h>

int main(void)
{
    int ret;
    ret = system("mkdir /media/card");
    printf("%d\n", ret);

    ret = system("mount /dev/mmcblk0p1 /media/card");
    if (ret == 0) {
        printf("sd mounted to /media/card\n");
    } else {
        printf("sd mount : fail\n");
    }
}

这是在linux C程序中挂载SD卡的正常方式吗? 或者在C程序中是否使用了特殊的系统调用/API来挂载SD?

最佳答案

安装文件系统是通过 mount(2) 完成的系统调用。这就是 mount 程序(您通过 system 调用的程序)实际执行的操作。

从 C 程序挂载文件系统的正常方法是使用系统调用。 fork 一个单独的进程来运行 shell 命令(即使用 system 函数)效率低下并且容易出现错误(例如 shell 注入(inject)安全漏洞),并且给你更少的控制。调用mkdir 程序也是如此;只需使用 mkdir(2)系统调用代替。 (你上面的程序本质上是一个用 C 编写的 shell 脚本,这很愚蠢。)

关于c - C程序挂载SD卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25735642/

相关文章:

C++ Ubuntu。使用 FFMPEG 库编译的多个 undefined reference

c - 与 msghdr 结构中的 msg_name 字段混淆

linux - 树莓派 3 上的 SPI_IOC_MESSAGE(N)

linux-kernel - 哪个驱动程序正在处理我的 IOCTL

Clang 静态分析器找不到 stdio.h

c - 逐个字符打印字符串

c - 接收十六进制值并将其保存到数组中 [STM32]

c - 如何修复 "Segmentation fault(core dumped)"?

c++ - 多线程 C++11 应用程序中的同步

c - 多线程程序中不接收UDP并输出数据