F4MP/f4mp_originalcode/thirdparty/zpl/code/header/process.h

57 lines
1.3 KiB
C
Raw Normal View History

// file: header/process.h
/** @file process.c
@brief Process creation and manipulation methods
@defgroup process Process creation and manipulation methods
Gives you the ability to create a new process, wait for it to end or terminate it.
It also exposes standard I/O with configurable options.
@{
*/
#ifdef ZPL_EDITOR
#include <zpl.h>
#endif
ZPL_BEGIN_C_DECLS
// TODO(zaklaus): Add Linux support
typedef enum {
ZPL_PR_OPTS_COMBINE_STD_OUTPUT = ZPL_BIT(1),
ZPL_PR_OPTS_INHERIT_ENV = ZPL_BIT(2),
ZPL_PR_OPTS_CUSTOM_ENV = ZPL_BIT(3),
} zpl_pr_opts;
typedef struct {
zpl_file in, out, err;
void *f_stdin, *f_stdout, *f_stderr;
#ifdef ZPL_SYSTEM_WINDOWS
void *win32_handle;
#else
// todo
#endif
} zpl_pr;
typedef struct {
char *con_title;
char *workdir;
zpl_isize env_count;
char **env; // format: "var=name"
zpl_u32 posx, posy;
zpl_u32 resx, resy;
zpl_u32 bufx, bufy;
zpl_u32 fill_attr;
zpl_u32 flags;
zpl_b32 show_window;
} zpl_pr_si;
ZPL_DEF zpl_i32 zpl_pr_create(zpl_pr *process, const char **args, zpl_isize argc, zpl_pr_si si, zpl_pr_opts options);
ZPL_DEF void zpl_pr_destroy(zpl_pr *process);
ZPL_DEF void zpl_pr_terminate(zpl_pr *process, zpl_i32 err_code);
ZPL_DEF zpl_i32 zpl_pr_join(zpl_pr *process);
//! @}
ZPL_END_C_DECLS