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