从c运行几个命令行命令++

2024-09-27 09:31:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python编写了一个程序,它的功能是能够发现文件大小,创建目录,并像在普通shell中一样四处移动。问题是我需要能够用c++来完成。在

下面是我需要c++功能的python代码:

os.chdir('r'+str(r)+'n'+str(n))
def build_path(newpath):
    if os.path.isdir(newpath):
        os.chdir(newpath)
    else:
        os.mkdir(newpath)
        os.chdir(newpath)

还有这件作品:

^{pr2}$

所以基本上我需要能够创建一些目录,转换成那些目录,构建文件,但是不要让它们变得比2.5 MB大得多,当它们最终超过这个大小时,创建一个以1为增量的新文件。在

所以文件树看起来像:

r4n4/dir1/data0、data1、data2等 r4n4/dir2/data0、data1、data2等 等等。在

我如何用c++实现这一点? 我知道我可以呼叫系统('command') 但我不知道如何使用它很好地获得文件大小,我只是希望有一个更简单的方法来做到这一点。 另外,我没有权限在我运行这个程序的地方使用boost。在


Tags: 文件path代码程序功能目录osshell
3条回答

尝试查看boost::filesystem库。(http://www.boost.org/doc/libs/1_54_0/libs/filesystem/doc/index.htm)教程中涵盖了您的所有三个请求。在

您可以在代码中使用stat()来获取文件系统对象的属性。下面是一个例子:

#include <sys/types.h>
#include <sys/stat.h>

struct stat buf;
stat(filename, &buf);

// If it's a regular file, print the size in bytes
if ((buf.st_mode & S_IFREG) == S_IFREG)
{
  off_t size = buf.st_size;
  fprintf(stdout, "%s is a regular file\n", filename);
  fprintf(stdout, "%s is a regular file: size %zd bytes\n", filename, size);
}

stat.h中也有一些宏,这些宏使得检查某个文件是否是常规文件或其他文件变得更加容易,而不是像上面那样执行多个操作。例如,S_ISREG宏将执行与上面代码相同的操作:

^{pr2}$

S_ISDIR将告诉您它是否是一个目录。还有其他类似的宏。在

您可以执行man -s 2 stat来查看stat()的手册页并获取更多详细信息。希望这有帮助。在

你可以利用系统调用来实现你想要的。如果您使用Linux,请查看以下手册页:

man 2 chdir
man 2 mkdir
man 2 stat

相关问题 更多 >

    热门问题