如何使用C ++控制操作系统?

时间:2019-01-07 14:32:58

标签: c++ shell operating-system

我正在计划使用C ++创建外壳,并且我需要一个工具来让外壳执行基本的操作系统操作,例如列出当前工作目录的项目,复制文件,更改文件许可权等。用来达成目标吗?

2 个答案:

答案 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 APILinux syscalls(2) API(具有更多库函数,请参见intro(3))或Windows的WinAPI

从外壳内部使用它。您将编写各种shell内建代码,以对OS内核进行适当的调用。例如,内置的cd shell将在Linux上调用chdir(2)系统调用。详细信息显然是特定于操作系统的。

如果为某些Unix做shell,请研究现有free software shell的来源以获取启发。您可能对sashbash(或fish,用C ++编码)感兴趣。在Linux上,您还可以使用strace(1)来了解一些现有Shell进行的系统调用。