blob: a21fd5b9c70dd162dcc848caaf4efdf412e6f4c9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
// like popen, but allowing for non-blocking reads
#ifndef PROCESS_H_
#define PROCESS_H_
typedef struct Process Process;
// returns NULL on failure
bool process_exec(Process *process, char const *program, char **argv);
// returns the error last error produced, or NULL if there was no error.
char const *process_geterr(Process *process);
// returns:
// -2 on error
// -1 if no data is available right now
// 0 on end of file
// or a positive number indicating the number of bytes read to data (at most size)
long long process_read(Process *process, char *data, size_t size);
// Checks if the process has exited. Returns:
// -1 if the process returned a non-zero exit code, or got a signal.
// 1 if the process exited successfully
// 0 if the process hasn't exited.
// If message is not NULL, it will be set to a description of what happened (e.g. "exited successfully")
int process_check_status(Process *process, char *message, size_t message_size);
// kills process if still running, and frees data associated with it.
void process_stop(Process *process);
#endif
|