df在c ++中使用的linux命令返回错误的值

时间:2017-11-06 12:40:36

标签: c++ linux

我在Linux系统上使用c ++代码。 在我的代码中,我目前正在使用mount()函数(使用#include <sys/mount.h>)在"mmcblk1p1"中安装名为dev. --> /dev/mmcblk1p1的SD卡是我的SD卡。 我可以成功挂载,将内容写入其中,使用umount() c ++函数卸载它。到目前为止一切都很好。

现在,我想在写任何内容之前知道什么是可用空间。 为此,我在我的算法中使用这个Linux终端命令:

FILE *stream = popen("df /dev/mmcblk1p1", "r");

我能够获得流输出,并获取所需的值。

我的问题是: 如果我在命令行中手动进行(没有c ++算法..),我可以挂载我的SD卡,使用df命令,并得到以下响应:

 Filesystem     1K-blocks   Used Available Use% Mounted on
 /dev/mmcblk1p1   7555072 124544   7430528   2% /mnt/usb

值7430528绝对正确,这是我想要的那个。 但是,如果我继续使用我的c ++编程,我会得到类似的东西:

 Filesystem     1K-blocks  Used Available Use% Mounted on
 devtmpfs          328668     4    328664   1% /dev

由于某种原因,似乎我的算法安装了SD卡时,操作系统在使用df命令后给出的响应是错误的,根本不涉及SD卡。在我的算法中,我成功获得了值328664,但不幸的是,这与我的SD卡不对应。

如果有任何想法,非常感谢你的帮助。

此致

0 个答案:

没有答案