Igor Sysoev | a6717c4 | 2002-12-23 06:29:22 +0000 | [diff] [blame] | 1 | #ifndef _NGX_PROCESS_H_INCLUDED_ |
| 2 | #define _NGX_PROCESS_H_INCLUDED_ |
| 3 | |
| 4 | |
Igor Sysoev | 160d774 | 2003-11-19 16:26:41 +0000 | [diff] [blame] | 5 | typedef pid_t ngx_pid_t; |
| 6 | |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 7 | typedef void (*ngx_spawn_proc_pt) (ngx_cycle_t *cycle, void *data); |
| 8 | |
| 9 | typedef 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 Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 19 | unsigned exiting:1; |
Igor Sysoev | 993dc06 | 2004-01-13 06:39:14 +0000 | [diff] [blame] | 20 | unsigned exited:1; |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 21 | } ngx_process_t; |
| 22 | |
| 23 | |
| 24 | typedef struct { |
| 25 | char *path; |
| 26 | char *name; |
| 27 | char *const *argv; |
| 28 | char *const *envp; |
| 29 | } ngx_exec_ctx_t; |
| 30 | |
| 31 | |
Igor Sysoev | f2954c3 | 2004-01-08 21:02:06 +0000 | [diff] [blame] | 32 | #define NGX_PROCESS_SINGLE 0 |
| 33 | #define NGX_PROCESS_MASTER 1 |
| 34 | #define NGX_PROCESS_WORKER 2 |
Igor Sysoev | a6717c4 | 2002-12-23 06:29:22 +0000 | [diff] [blame] | 35 | |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 36 | #define NGX_MAX_PROCESSES 1024 |
Igor Sysoev | a6717c4 | 2002-12-23 06:29:22 +0000 | [diff] [blame] | 37 | |
Igor Sysoev | 49783fc | 2004-01-13 16:43:23 +0000 | [diff] [blame] | 38 | #define NGX_PROCESS_NORESPAWN -1 |
| 39 | #define NGX_PROCESS_RESPAWN -2 |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 40 | #define NGX_PROCESS_DETACHED -3 |
| 41 | |
| 42 | |
Igor Sysoev | 3d58f8c | 2004-01-08 08:47:17 +0000 | [diff] [blame] | 43 | #define ngx_getpid getpid |
| 44 | |
Igor Sysoev | 49783fc | 2004-01-13 16:43:23 +0000 | [diff] [blame] | 45 | ngx_pid_t ngx_spawn_process(ngx_cycle_t *cycle, |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 46 | ngx_spawn_proc_pt proc, void *data, |
| 47 | char *name, ngx_int_t respawn); |
Igor Sysoev | 80340f0 | 2004-01-13 21:33:59 +0000 | [diff] [blame] | 48 | ngx_pid_t ngx_exec(ngx_cycle_t *cycle, ngx_exec_ctx_t *ctx); |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 49 | void ngx_respawn_processes(ngx_cycle_t *cycle); |
| 50 | void ngx_process_get_status(void); |
| 51 | |
Igor Sysoev | 25b36fe | 2004-02-03 16:43:54 +0000 | [diff] [blame] | 52 | extern ngx_pid_t ngx_pid; |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 53 | extern ngx_uint_t ngx_last_process; |
| 54 | extern ngx_process_t ngx_processes[NGX_MAX_PROCESSES]; |
Igor Sysoev | 160d774 | 2003-11-19 16:26:41 +0000 | [diff] [blame] | 55 | |
| 56 | |
Igor Sysoev | a6717c4 | 2002-12-23 06:29:22 +0000 | [diff] [blame] | 57 | #endif /* _NGX_PROCESS_H_INCLUDED_ */ |