使用c ++将目录大小存储到整数变量中

时间:2014-12-16 07:33:47

标签: c++ linux directory

下面是我的C ++代码,其中我试图将Directory的大小存储为整数变量

char path[60];
char exec[180];
sprintf(path,"%s","/home/Directory");
sprintf(exec,"du %s",path);
int k;
k = system(exec);
printf("\n Value = %d\n",k);

,输出

556 /home/Directory
 Value = 0

它不存储在K

这里我们可以使用

将输出存储到文件中
sprintf(exec,"du %s" > file.txt,path);
sprintf(exec,"du %s >> file.txt",path);

但我们必须再次打开该文件(file.txt)并将数据读入变量。

我的问题是有任何其他替代方法将目录的大小存储到整数变量中请建议我有任何替代方案 在此先感谢

1 个答案:

答案 0 :(得分:1)

作为Joachim& Mats解释说,做这样的事情。

以下代码仅供参考!

#include <stdio.h>

const int MAX_BUFFER = 2048;
char path[60];
char cmd[180];
sprintf(path,"%s","/home/Directory");
sprintf(cmd,"du /home/Directory",path); 
char buffer[MAX_BUFFER];
FILE *stream = popen(cmd, "r");
if (stream)
{
   while (!feof(stream))
   {
        if (fgets(buffer, MAX_BUFFER, stream) != NULL)
        {
           //...
        }
   }
   pclose(stream);
}