我的环境: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/