Question

I'm writing a c++ program, here is the task:

I have a string proj_Name and another string address, and I have a folder named root beside my program. Now I have to make a folder named proj_name in the root folder and copy everything from address to this new folder.

When using linux terminal for making a directory or coping a file I type mkdir proj_name or cp [src] [dst]. I've been told that for using terminal commands in my program I must use system calls, but I have no idea on what system call is or how I can use it.

In addition to that I may make some more project folders in root, and I must have access to each one of them in my program.

How can I use OOP design for handling those files and folders (for example I get a proj_name from user and I have to find the corresponding folder in root, and then do some tasks to that project)?

Absolutely I should have a _project_ class, but I don't know what member variables it needs. Besides I've been told that I can copy folders in a recursive manner like this: copy the folder-> open it->for each file->copy the file->for each folder do this algorithm from the beginning.

Can anybody help me please?

Thanks in advance.

Was it helpful?

Solution

I'm assuming that this is homework although you don't indicate that it is. Three solutions spring to mind:

  1. Use the system() call to create command line strings and execute them. Frankly this is pretty awful for a number of reasons: (i) it's difficult to check whether the command worked, (ii) it's easy to insert malign code (i.e. hack) and (iii) it's very platform specific.

  2. You could, as you mention, use system calls to acheive the copying of files, creating of directories etc. If you're working on UNIX you could take a look at this question which may help. Again the disadvantage here would be that it's very platform specific.

  3. Finally, you could use a generic library such as Boost filesystem which is the best (of these three solutions) but might not help you too much if you have to demonstrate that you can model a filesystem in OO. A look through the API though might give you some clues as to how the various objects could fit together in an OO design.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top