在 C++ 中使用 Linux 系统调用以及文件和文件夹管理
using linux system calls and file & folder management in c++
我正在编写一个c ++程序,任务如下:
我有一个string proj_Name
和另一个字符串地址,我的程序旁边有一个名为 root 的文件夹。现在,我必须在根文件夹中创建一个名为proj_name
的文件夹,并将地址中的所有内容复制到此新文件夹中。
当使用linux终端制作目录或复制文件时,我键入mkdir proj_name
或cp [src] [dst]
。有人告诉我,要在我的程序中使用终端命令,我必须使用系统调用,但我不知道什么是系统调用或如何使用它。
除此之外,我可能会在root中创建更多的项目文件夹,并且我必须能够访问程序中的每一个。
如何使用 OOP 设计来处理这些文件和文件夹(例如,我从用户那里获得proj_name
,我必须在 root 中找到相应的文件夹,然后对该项目执行一些任务(?
我绝对应该有一个_project_ class
,但我不知道它需要什么成员变量。此外,有人告诉我,我可以像这样以递归的方式复制文件夹:复制文件夹>打开它>为每个文件>复制文件>对于每个文件夹,从一开始就执行此算法。
有人可以帮我吗?
提前谢谢。
我假设这是家庭作业,尽管您没有指出它是。三个解决方案浮现在脑海中:
-
使用
system()
调用创建命令行字符串并执行它们。坦率地说,这非常糟糕,原因有很多:(i(很难检查命令是否有效,(ii(插入恶意代码(即hack(很容易,(iii(它非常特定于平台。 -
正如您所提到的,您可以使用系统调用来实现文件复制、目录创建等。如果你正在研究UNIX,你可以看看这个问题,这可能会有所帮助。同样,这里的缺点是它非常特定于平台。
-
最后,您可以使用通用库,例如 Boost 文件系统,这是最好的(这三种解决方案(,但如果您必须证明可以在 OO 中对文件系统进行建模,则可能不会对您有太大帮助。不过,浏览一下 API 可能会为您提供一些关于各种对象如何在 OO 设计中组合在一起的线索。
- 如何将更多文件夹添加到c++include路径
- 从对象文件(.o)在macos上制作归档文件(.a文件)
- 有没有办法读取C++中的文件文件夹?
- 错误C1083:无法打开包含文件.文件正确包含在代码中
- NDK 无法看到头文件 .h 文件
- 文件文件夹关联或归属
- 如何以阻止的方式删除文件/文件夹
- 在MFC中序列化为Unicode文本文件-文件头错误
- (Qt C++)如何从QTableView将所选文件/文件夹打印到文本文件中
- 获取带有POCO的服务可执行文件文件夹
- 如何从文件文件夹创建自定义文件类型
- 如何在windows7有限内存的电脑上读取大文件?文件大小为25GB,但RAM容量只有16GB
- c++以二进制方式读取文件.文件结束的问题
- 如何在linux的makefile中使用头文件(.h)文件中定义的宏定义
- 如何从文件夹中读取文件?文件夹包含不同类型的文件名
- 如何查找指向文件/文件夹的所有硬链接和符号链接(Windows和UNIX)
- 生成临时文件/文件夹 c++ GTEST
- 更改应用程序文件(. c文件)的名称
- 使用vc++2010从usb读取文件/文件夹
- 为特定的文件/文件夹禁用-Wall标志