从c++运行一些命令行命令
Run a few command line commands from c++
我用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)
还有这篇文章:
if os.stat('data'+str(tick)).st_size > 2500000:
heavyFile.close()
tick+=1
heavyFile=open('data'+str(tick),'w')
os.system('touch COMPLETED'+str(r)+str(n))
因此,基本上,我需要能够创建一些目录,更改到这些目录,构建文件,但不要让它们变得比2.5 MB大得多,当它们最终超过这个大小时,创建一个递增1的新文件。
所以文件树最终看起来像:
r4n4/dir1/data0、data1、data2等r4n4/dir2/data0、data1、data2等等等
我如何在c++中做到这一点?我知道我可以调用系统("命令")但我不知道如何使用它来很好地获得文件大小,我只是希望有一种更简单的方法来做到这一点。此外,我无法在运行此程序的地方访问boost。
尝试检查boost::文件系统库。(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 filen", filename);
fprintf(stdout, "%s is a regular file: size %zd bytesn", filename, size);
}
stat.h
中还有一些宏,可以更容易地检查某个文件是否是常规文件或其他文件,而不是像上面那样对多个文件进行"与"运算。例如,S_ISREG宏将执行与上面代码相同的操作:
if(S_ISREG(buf.st_mode)) /* stat.h macro, instead of AND'ing */
{
fprintf(stdout, "%s is a regular filen", filename);
}
宏S_ISDIR
会告诉你它是否是一个目录。还有其他类似的宏。
您可以执行man -s 2 stat
以查看stat()的手册页并获取更多详细信息。希望这能有所帮助。
您可以利用系统调用来实现您想要的功能。如果您使用的是Linux,请查看以下手册页:
man 2 chdir
man 2 mkdir
man 2 stat
您也可以使用以下命令从c++代码中调用脚本:
system ("python script.py");
- 从命令行c++发送文本文件名
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 数组长度,为什么从命令行获取时不能使用它?
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 通过 Openssl 命令行加密,通过 c++ 解密
- CMake "--target install"无需"--build"命令行
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 使用 C++ 将命令行参数拆分为参数/向量
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- LLVM | codegen 用于带有命令行选项的程序输入功能
- 如何在OMNET++中添加专门的命令行参数?
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- 在命令行中创建快捷命令
- 在命令行上将输入显示到数组中时如何删除 ./a.out?
- 在远程服务器上执行命令行命令
- 从c++运行一些命令行命令
- 如何从C++程序执行命令行命令