Hamigaki.Process

Windows版のHamigaki.Processを作りました。
今日の成果物
とりあえず必要最低限の機能だけです。
機能の例はおおよそこうなります。

#include <hamigaki/process/child.hpp>
#include <iostream>

namespace proc = hamigaki::process;

int main()
{
    try
    {
        proc::ipc_map ipc;
        ipc.stdin_behavior(proc::capture_stream());
        ipc.stdout_behavior(proc::capture_stream());

        // stderr -> stdout のリダイレクトは未実装なので、とりあえずNUL
        ipc.stderr_behavior(proc::silence_stream());

        proc::child c("C:\\Windows\\System32\\sort.exe", ipc);
        // ここで子プロセスのメインスレッドのハンドルは閉じている

        proc::pipe_sink& sink = c.stdin_sink();
        sink.write("one\r\ntwo\r\nthree\r\n", 17);
        sink.close();

        proc::pipe_sink& src = c.stdin_source();
        // 読み出しは面倒なので略

        c.wait();

        // ここで子プロセスのハンドルが閉じられる
    }
    catch (const std::exception& e)
    {
        std::cerr << "Error: " << e.what() << std::endl;
    }
}

見ての通り、かなりいい加減なので、明日以降インタフェースが大幅に変更される可能性大です。