proc.h (1098B)
1 #pragma once 2 3 #include <stdbool.h> 4 #include <stddef.h> 5 6 #include "nvim/event/defs.h" // IWYU pragma: keep 7 #include "nvim/os/os_defs.h" 8 #include "nvim/types_defs.h" 9 10 static inline Proc proc_init(Loop *loop, ProcType type, void *data) 11 { 12 return (Proc) { 13 .type = type, 14 .data = data, 15 .loop = loop, 16 .events = NULL, 17 .pid = 0, 18 .status = -1, 19 .refcount = 0, 20 .stopped_time = 0, 21 .cwd = NULL, 22 .argv = NULL, 23 .exepath = NULL, 24 .in = { .closed = false }, 25 .out = { .s.closed = false, .s.fd = STDOUT_FILENO }, 26 .err = { .s.closed = false, .s.fd = STDERR_FILENO }, 27 .cb = NULL, 28 .state_cb = NULL, 29 .closed = false, 30 .internal_close_cb = NULL, 31 .internal_exit_cb = NULL, 32 .detach = false, 33 }; 34 } 35 36 /// Get the path to the executable of the process. 37 static inline const char *proc_get_exepath(Proc *proc) 38 { 39 return proc->exepath != NULL ? proc->exepath : proc->argv[0]; 40 } 41 42 static inline bool proc_is_stopped(Proc *proc) 43 { 44 bool exited = (proc->status >= 0); 45 return exited || (proc->stopped_time != 0); 46 } 47 48 #include "event/proc.h.generated.h"