blob: 66b9d7d457933e1d91edc0cf74eddae487943e0e [file] [log] [blame]
Igor Sysoeva6717c42002-12-23 06:29:22 +00001#ifndef _NGX_PROCESS_H_INCLUDED_
2#define _NGX_PROCESS_H_INCLUDED_
3
4
Igor Sysoev160d7742003-11-19 16:26:41 +00005typedef pid_t ngx_pid_t;
6
Igor Sysoev3c3ca172004-01-05 20:55:48 +00007typedef void (*ngx_spawn_proc_pt) (ngx_cycle_t *cycle, void *data);
8
9typedef struct {
10 ngx_pid_t pid;
11 int status;
12
13 ngx_spawn_proc_pt proc;
14 void *data;
15 char *name;
16
17 unsigned respawn:1;
18 unsigned detached:1;
Igor Sysoev3c3ca172004-01-05 20:55:48 +000019 unsigned exiting:1;
Igor Sysoev993dc062004-01-13 06:39:14 +000020 unsigned exited:1;
Igor Sysoev3c3ca172004-01-05 20:55:48 +000021} ngx_process_t;
22
23
24typedef struct {
25 char *path;
26 char *name;
27 char *const *argv;
28 char *const *envp;
29} ngx_exec_ctx_t;
30
31
Igor Sysoevf2954c32004-01-08 21:02:06 +000032#define NGX_PROCESS_SINGLE 0
33#define NGX_PROCESS_MASTER 1
34#define NGX_PROCESS_WORKER 2
Igor Sysoeva6717c42002-12-23 06:29:22 +000035
Igor Sysoev3c3ca172004-01-05 20:55:48 +000036#define NGX_MAX_PROCESSES 1024
Igor Sysoeva6717c42002-12-23 06:29:22 +000037
Igor Sysoev49783fc2004-01-13 16:43:23 +000038#define NGX_PROCESS_NORESPAWN -1
39#define NGX_PROCESS_RESPAWN -2
Igor Sysoev3c3ca172004-01-05 20:55:48 +000040#define NGX_PROCESS_DETACHED -3
41
42
Igor Sysoev3d58f8c2004-01-08 08:47:17 +000043#define ngx_getpid getpid
44
Igor Sysoev49783fc2004-01-13 16:43:23 +000045ngx_pid_t ngx_spawn_process(ngx_cycle_t *cycle,
Igor Sysoev3c3ca172004-01-05 20:55:48 +000046 ngx_spawn_proc_pt proc, void *data,
47 char *name, ngx_int_t respawn);
Igor Sysoev80340f02004-01-13 21:33:59 +000048ngx_pid_t ngx_exec(ngx_cycle_t *cycle, ngx_exec_ctx_t *ctx);
Igor Sysoev3c3ca172004-01-05 20:55:48 +000049void ngx_respawn_processes(ngx_cycle_t *cycle);
50void ngx_process_get_status(void);
51
Igor Sysoev25b36fe2004-02-03 16:43:54 +000052extern ngx_pid_t ngx_pid;
Igor Sysoev3c3ca172004-01-05 20:55:48 +000053extern ngx_uint_t ngx_last_process;
54extern ngx_process_t ngx_processes[NGX_MAX_PROCESSES];
Igor Sysoev160d7742003-11-19 16:26:41 +000055
56
Igor Sysoeva6717c42002-12-23 06:29:22 +000057#endif /* _NGX_PROCESS_H_INCLUDED_ */