#pragma once #include #include #include #include typedef struct { uint64_t userdata; FILE* in; FILE* out; FILE* err; // OS-dependent handle to the process uint32_t _proc_hdl; } uniproc_process; uniproc_process uniproc_create_process(const char* cmd, const size_t num_args, const char** argv); void uniproc_await_processes(const uniproc_process* p, int* return_codes, const size_t num_processes); void uniproc_close_process(uniproc_process* p); int uniproc_are_processes_finished(const uniproc_process* p, const size_t num_processes); void uniproc_nullify_processes(uniproc_process* p, const size_t num_processes); int uniproc_is_process_null(const uniproc_process* p); void uniproc_await_any_processes(const uniproc_process* p, const size_t num_processes); void uniproc_set_userdata(uniproc_process* p, void const* userdata); void* uniproc_get_userdata(uniproc_process* p);