我正在计划使用C ++创建外壳,并且我需要一个工具来让外壳执行基本的操作系统操作,例如列出当前工作目录的项目,复制文件,更改文件许可权等。用来达成目标吗?
答案 0 :(得分:2)
如果您愿意使用C ++ 17,则可以在 标准库,并且大部分在新添加的 filesystem 库中。例如;
https://en.cppreference.com/w/cpp/filesystem/current_path https://en.cppreference.com/w/cpp/filesystem/copy
如果您需要它与较旧的编译器一起使用,则可以在标准库中找到它的一些,但是对于大多数功能,您需要使用系统专用的替代方法
例如Windows中的GetCurrentDirectory
或Linux / OSX中的getcwd
。
答案 1 :(得分:2)
您的操作系统具有一些API,例如POSIX API
,Linux syscalls(2)
API(具有更多库函数,请参见intro(3))或Windows的WinAPI。
从外壳内部使用它。您将编写各种shell内建代码,以对OS内核进行适当的调用。例如,内置的cd
shell将在Linux上调用chdir(2)系统调用。详细信息显然是特定于操作系统的。
如果为某些Unix做shell,请研究现有free software shell的来源以获取启发。您可能对sash或bash(或fish,用C ++编码)感兴趣。在Linux上,您还可以使用strace(1)来了解一些现有Shell进行的系统调用。