process_control 2.0.0

Methods for ergonomically running processes with timeouts
Documentation
#include <stdbool.h>
#include <sys/types.h>
#include <sys/wait.h>

struct exit_status {
    int value;
    bool terminated;
};

int wait_for_process(pid_t process_id, struct exit_status *exit_status) {
    siginfo_t process_info;

    int result = waitid(
        P_PID,
        process_id,
        &process_info,
        WEXITED | WNOWAIT | WSTOPPED
    );
    if (result < 0) {
        return result;
    }

    exit_status->value = process_info.si_status;
    exit_status->terminated = process_info.si_code != CLD_EXITED;

    return 0;
}