简体   繁体   中英

using linux system calls and file & folder management in c++

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.

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 (ie 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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM