使用linux系统调用和文件& c ++中的文件夹管理

时间:2012-05-18 13:33:41

标签: c++ linux system-calls file-management

我正在编写一个c ++程序,这是任务:

我有一个string proj_Name和另一个字符串地址,我的程序旁边有一个名为root的文件夹。现在我必须在根文件夹中创建一个名为proj_name的文件夹,并将地址中的所有内容复制到此新文件夹中。

使用linux终端创建目录或处理文件时,我键入mkdir proj_namecp [src] [dst]。我被告知在我的程序中使用终端命令我必须使用系统调用,但我不知道系统调用是什么或如何使用它。

除此之外,我可以在root中创建更多项目文件夹,并且我必须能够访问我的程序中的每一个。

如何使用OOP设计来处理这些文件和文件夹(例如我从用户那里得到proj_name,我必须在root中找到相应的文件夹,然后对该项目执行一些任务)?

我绝对应该有一个_project_ class,但我不知道它需要什么成员变量。此外,我被告知我可以像这样以递归方式复制文件夹:复制文件夹 - >打开它 - >对于每个文件 - >复制文件 - >为每个文件夹从头开始执行此算法。

有人可以帮帮我吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我假设这是作业,尽管你没有表明它是。我想到了三种解决方案:

  1. 使用system()调用创建命令行字符串并执行它们。坦率地说,由于以下几个原因,这非常糟糕:(i)很难检查命令是否有效,(ii)很容易插入恶意代码(即黑客)和(iii)它是非常特定于平台的。

    < / LI>
  2. 正如您所提到的,您可以使用系统调用来实现文件复制,创建目录等。如果您在UNIX上工作,可以take a look at this question这可能有所帮助。这里的缺点再一点是它非常特定于平台。

  3. 最后,您可以使用Boost filesystem这样的通用库(这三种解决方案中最好的)但如果您必须证明可以对文件系统进行建模,则可能对您没有太多帮助。 OO。通过API查看可能会为您提供一些关于各种对象如何在OO设计中组合在一起的线索。