通过system函数执行mount命令 与 手动输入执行mount命令 有何区别?

charleswangchaoyu 2016-03-10 05:14:54
大师们好,

我在开发板上调试一个操作U盘的程序,在C代码中通过调用system函数来执行mount命令,代码如下
system("mount -o sync /dev/sda1 /mnt/sda1");

命令能够被执行,但程序运行完毕后通过df命令查看U盘空间时,提示Input/output error,
此时通过dmesg可以看到
attempt to access beyond end of device
sda: rw=2, want=29775, limit=8064
attempt to access beyond end of device
sda: rw=2, want=29776, limit=8064
attempt to access beyond end of device
sda: rw=0, want=29769, limit=8064
FAT: Directory bread(block 29640) failed
attempt to access beyond end of device
sda: rw=0, want=29770, limit=8064
FAT: Directory bread(block 29641) failed
attempt to access beyond end of device
sda: rw=0, want=29771, limit=8064
FAT: Directory bread(block 29642) failed
这样的错误信息。

这个时候在终端中再手动输入同样的mount命令并执行后,df就可以显示U盘的空间信息了。

想请教各位大师,导致这一现象可能的原因是什么?在程序中执行mount命令,与在终端中手动输入执行mount命令,有什么区别?
非常感谢。
...全文
448 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
renwotao2009 2016-03-13
  • 打赏
  • 举报
回复
建议看下system函数的用法,是不是阻塞?
图灵转世 2016-03-13
  • 打赏
  • 举报
回复
应该是权限的问题。
charleswangchaoyu 2016-03-11
  • 打赏
  • 举报
回复
估计大师们都在忙,自己顶!d=====( ̄▽ ̄*)b
nswcfd 2016-03-11
  • 打赏
  • 举报
回复
可能的话,用strace比较一下两种场景下,mount系统调用的参数有什么差异吧。

23,117

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧