启动《Minecraft》 · 系统调用库

程序不是孤岛。它需要与操作系统交互——读写文件、创建进程、网络通信、获取系统信息。C++ 标准库提供了一部分系统功能,但很多时候我们需要直接使用操作系统的 API。

让我们来看看如何用 C++ 与操作系统打交道——甚至,启动《Minecraft》。


C++17 文件系统库

在 C++17 之前,文件系统操作需要依赖平台特定的 API。现在我们有了标准的 <filesystem> 库:

#include <iostream>
#include <filesystem>

namespace fs = std::filesystem;

int main()
{
    // 当前路径
    std::cout << "Current path: " << fs::current_path() << std::endl;
    
    // 遍历目录
    for (const auto& entry : fs::directory_iterator("."))
    {
        std::cout << entry.path() << std::endl;
    }
    
    // 递归遍历
    for (const auto& entry : fs::recursive_directory_iterator("."))
    {
        if (entry.is_regular_file())
        {
            std::cout << entry.path() << " - " 
                      << entry.file_size() << " bytes" << std::endl;
        }
    }
    
    return 0;
}

文件操作


进程管理

C++ 标准库没有进程管理功能,需要使用平台 API。

Windows 进程

Linux/macOS 进程


管道通信

与子进程进行通信:


动态库加载

运行时加载共享库/DLL:


环境变量


系统信息


网络编程基础


完整示例:启动 Minecraft

把前面的知识综合起来:


总结

功能
标准库
平台 API

文件系统

<filesystem> (C++17)

Win32/POSIX

进程管理

CreateProcess/fork

动态库

LoadLibrary/dlopen

网络

WinSock/BSD Socket

环境变量

getenv

_putenv/setenv

系统信息

thread::hardware_concurrency

平台 API

C++ 给了我们接触系统底层的能力。善用这种能力,你可以写出真正强大的应用程序——哪怕只是为了启动《Minecraft》!

Last updated