Ruby 2.0.0p353(2013-11-22revision43784)

- Main Page
- Modules
- Data Structures
- Files

- File List
- Globals

Data Structures | Macros | Functions | Variables
process.c File Reference
`#include "ruby/ruby.h"`
`#include "ruby/io.h"`
`#include "ruby/thread.h"`
`#include "ruby/util.h"`
`#include "internal.h"`
`#include "vm_core.h"`
`#include <stdio.h>`
`#include <errno.h>`
`#include <signal.h>`
`#include <time.h>`
`#include <ctype.h>`
`#include "ruby/st.h"`
`#include <sys/stat.h>`
`#include "dln.h"`
Include dependency graph for process.c:

Go to the source code of this file.

## Data Structures
struct | wait_data
struct | string_part
struct | run_exec_dup2_fd_pair

## Macros
#define | EXIT_SUCCESS 0
#define | EXIT_FAILURE 1
#define | MAXPATHLEN 1024
#define | numberof(array) (int)(sizeof(array)/sizeof((array)[0]))
#define | WIFEXITED(w) (((w) & 0xff) == 0)
#define | WIFSIGNALED(w) (((w) & 0x7f) > 0 && (((w) & 0x7f) < 0x7f))
#define | WIFSTOPPED(w) (((w) & 0xff) == 0x7f)
#define | WEXITSTATUS(w) (((w) >> 8) & 0xff)
#define | WTERMSIG(w) ((w) & 0x7f)
#define | WSTOPSIG WEXITSTATUS
#define | preserving_errno(stmts) do {int saved_errno = errno; stmts; errno = saved_errno;} while (0)
#define | p_uid_from_name p_uid_from_name
#define | p_gid_from_name p_gid_from_name
#define | PREPARE_GETPWNAM /* do nothing */
#define | OBJ2UID(id) NUM2UIDT(id)
#define | p_uid_from_name rb_f_notimplement
#define | PREPARE_GETGRNAM /* do nothing */
#define | OBJ2GID(id) NUM2GIDT(id)
#define | p_gid_from_name rb_f_notimplement
#define | PST2INT(st) NUM2INT(pst_to_i(st))
#define | NO_WAITPID
#define | before_fork() before_exec()
#define | after_fork() (rb_threadptr_pending_interrupt_clear(GET_THREAD()), after_exec())
#define | try_with_sh(prog, argv, envp) (void)0
#define | ARGV_COUNT(n) ((n)+1)
#define | ARGV_SIZE(n) (sizeof(char*) * ARGV_COUNT(n))
#define | ALLOC_ARGV(n, v) ALLOCV_N(char*, (v), ARGV_COUNT(n))
#define | USE_SPAWNV 0
#define | P_NOWAIT _P_NOWAIT
#define | CHILD_ERRMSG_BUFLEN 80
#define | ERRMSG(str) do { if (errmsg && 0 < errmsg_buflen) strlcpy(errmsg, (str), errmsg_buflen); } while (0)
#define | redirect_dup(oldfd) dup(oldfd)
#define | redirect_dup2(oldfd, newfd) dup2((oldfd), (newfd))
#define | redirect_close(fd) close(fd)
#define | redirect_open(pathname, flags, perm) open((pathname), (flags), (perm))
#define | rb_f_fork rb_f_notimplement
#define | proc_getpgrp rb_f_notimplement
#define | proc_setpgrp rb_f_notimplement
#define | proc_getpgid rb_f_notimplement
#define | proc_setpgid rb_f_notimplement
#define | proc_getsid rb_f_notimplement
#define | proc_setsid rb_f_notimplement
#define | proc_getpriority rb_f_notimplement
#define | proc_setpriority rb_f_notimplement
#define | proc_getrlimit rb_f_notimplement
#define | proc_setrlimit rb_f_notimplement
#define | p_sys_setuid rb_f_notimplement
#define | p_sys_setruid rb_f_notimplement
#define | p_sys_seteuid rb_f_notimplement
#define | p_sys_setreuid rb_f_notimplement
#define | p_sys_setresuid rb_f_notimplement
#define | proc_setuid rb_f_notimplement
#define | p_sys_setgid rb_f_notimplement
#define | p_sys_setrgid rb_f_notimplement
#define | p_sys_setegid rb_f_notimplement
#define | p_sys_setregid rb_f_notimplement
#define | p_sys_setresgid rb_f_notimplement
#define | p_sys_issetugid rb_f_notimplement
#define | proc_setgid rb_f_notimplement
#define | proc_getgroups rb_f_notimplement
#define | proc_setgroups rb_f_notimplement
#define | proc_initgroups rb_f_notimplement
#define | proc_getmaxgroups rb_f_notimplement
#define | proc_setmaxgroups rb_f_notimplement
#define | proc_daemon rb_f_notimplement
#define | proc_seteuid_m rb_f_notimplement
#define | proc_setegid_m rb_f_notimplement
#define | rb_proc_times rb_f_notimplement

## Functions
static void | check_uid_switch (void)
static void | check_gid_switch (void)
static VALUE | get_pid (void)
static VALUE | get_ppid (void)
VALUE | rb_last_status_get (void)
void | rb_last_status_set (int status, rb_pid_t pid)
void | rb_last_status_clear (void)
static VALUE | pst_to_i (VALUE st)
static VALUE | pst_pid (VALUE st)
static void | pst_message (VALUE str, rb_pid_t pid, int status)
static VALUE | pst_to_s (VALUE st)
static VALUE | pst_inspect (VALUE st)
static VALUE | pst_equal (VALUE st1, VALUE st2)
static VALUE | pst_bitand (VALUE st1, VALUE st2)
static VALUE | pst_rshift (VALUE st1, VALUE st2)
static VALUE | pst_wifstopped (VALUE st)
static VALUE | pst_wstopsig (VALUE st)
static VALUE | pst_wifsignaled (VALUE st)
static VALUE | pst_wtermsig (VALUE st)
static VALUE | pst_wifexited (VALUE st)
static VALUE | pst_wexitstatus (VALUE st)
static VALUE | pst_success_p (VALUE st)
static VALUE | pst_wcoredump (VALUE st)
static int | wait_each (rb_pid_t pid, int status, struct wait_data *data)
static int | waitall_each (rb_pid_t pid, int status, VALUE ary)
static void * | rb_waitpid_blocking (void *data)
rb_pid_t | rb_waitpid (rb_pid_t pid, int *st, int flags)
static VALUE | proc_wait (int argc, VALUE *argv)
static VALUE | proc_wait2 (int argc, VALUE *argv)
static VALUE | proc_waitall (void)
static ID | id_pid (void)
static VALUE | detach_process_pid (VALUE thread)
static VALUE | detach_process_watcher (void *arg)
VALUE | rb_detach_process (rb_pid_t pid)
static VALUE | proc_detach (VALUE obj, VALUE pid)
static void | before_exec_async_signal_safe (void)
static void | before_exec_non_async_signal_safe (void)
static void | before_exec (void)
static void | after_exec_async_signal_safe (void)
static void | after_exec_non_async_signal_safe (void)
static void | after_exec (void)
static void | security (const char *str)
static int | proc_exec_cmd (const char *prog, VALUE argv_str, VALUE envp_str)
static int | proc_exec_v (char **argv, const char *prog)
int | rb_proc_exec_n (int argc, VALUE *argv, const char *prog)
static int | proc_exec_sh (const char *str, VALUE envp_str)
int | rb_proc_exec (const char *str)
static void | mark_exec_arg (void *ptr)
static void | free_exec_arg (void *ptr)
static size_t | memsize_exec_arg (const void *ptr)
static VALUE | hide_obj (VALUE obj)
static VALUE | check_exec_redirect_fd (VALUE v, int iskey)
static VALUE | check_exec_redirect1 (VALUE ary, VALUE key, VALUE param)
static void | check_exec_redirect (VALUE key, VALUE val, struct rb_execarg *eargp)
int | rb_execarg_addopt (VALUE execarg_obj, VALUE key, VALUE val)
int | rb_exec_arg_addopt (struct rb_exec_arg *e, VALUE key, VALUE val)
static int | check_exec_options_i (st_data_t st_key, st_data_t st_val, st_data_t arg)
static int | check_exec_options_i_extract (st_data_t st_key, st_data_t st_val, st_data_t arg)
static int | check_exec_fds_1 (struct rb_execarg *eargp, VALUE h, int maxhint, VALUE ary)
static VALUE | check_exec_fds (struct rb_execarg *eargp)
static void | rb_check_exec_options (VALUE opthash, VALUE execarg_obj)
VALUE | rb_execarg_extract_options (VALUE execarg_obj, VALUE opthash)
static int | check_exec_env_i (st_data_t st_key, st_data_t st_val, st_data_t arg)
static VALUE | rb_check_exec_env (VALUE hash)
static VALUE | rb_check_argv (int argc, VALUE *argv)
static VALUE | rb_exec_getargs (int *argc_p, VALUE **argv_p, int accept_shell, VALUE *env_ret, VALUE *opthash_ret)
static int | compare_posix_sh (const void *key, const void *el)
static void | rb_exec_fillarg (VALUE prog, int argc, VALUE *argv, VALUE env, VALUE opthash, VALUE execarg_obj)
VALUE | rb_execarg_new (int argc, VALUE *argv, int accept_shell)
struct rb_execarg * | rb_execarg_get (VALUE execarg_obj)
VALUE | rb_execarg_init (int argc, VALUE *argv, int accept_shell, VALUE execarg_obj)
VALUE | rb_exec_arg_init (int argc, VALUE *argv, int accept_shell, struct rb_exec_arg *e)
void | rb_execarg_setenv (VALUE execarg_obj, VALUE env)
static int | fill_envp_buf_i (st_data_t st_key, st_data_t st_val, st_data_t arg)
static long | run_exec_dup2_tmpbuf_size (long n)
void | rb_execarg_fixup (VALUE execarg_obj)
void | rb_exec_arg_fixup (struct rb_exec_arg *e)
static int | rb_exec_without_timer_thread (const struct rb_execarg *eargp, char *errmsg, size_t errmsg_buflen)
VALUE | rb_f_exec (int argc, VALUE *argv)
static int | save_redirect_fd (int fd, struct rb_execarg *sargp, char *errmsg, size_t errmsg_buflen)
static int | intcmp (const void *a, const void *b)
static int | intrcmp (const void *a, const void *b)
static int | run_exec_dup2 (VALUE ary, VALUE tmpbuf, struct rb_execarg *sargp, char *errmsg, size_t errmsg_buflen)
static int | run_exec_close (VALUE ary, char *errmsg, size_t errmsg_buflen)
static int | run_exec_open (VALUE ary, struct rb_execarg *sargp, char *errmsg, size_t errmsg_buflen)
static int | run_exec_dup2_child (VALUE ary, struct rb_execarg *sargp, char *errmsg, size_t errmsg_buflen)
static VALUE | save_env_i (VALUE i, VALUE ary, int argc, VALUE *argv)
static void | save_env (struct rb_execarg *sargp)
int | rb_execarg_run_options (const struct rb_execarg *eargp, struct rb_execarg *sargp, char *errmsg, size_t errmsg_buflen)
int | rb_run_exec_options_err (const struct rb_exec_arg *e, struct rb_exec_arg *s, char *errmsg, size_t errmsg_buflen)
int | rb_run_exec_options (const struct rb_exec_arg *e, struct rb_exec_arg *s)
int | rb_exec_async_signal_safe (const struct rb_execarg *eargp, char *errmsg, size_t errmsg_buflen)
int | rb_exec_err (const struct rb_exec_arg *e, char *errmsg, size_t errmsg_buflen)
int | rb_exec (const struct rb_exec_arg *e)
static int | exit_status_code (VALUE status)
static VALUE | rb_f_exit_bang (int argc, VALUE *argv, VALUE obj)
void | rb_exit (int status)
VALUE | rb_f_exit (int argc, VALUE *argv)
VALUE | rb_f_abort (int argc, VALUE *argv)
void | rb_syswait (rb_pid_t pid)
static rb_pid_t | rb_spawn_process (struct rb_execarg *eargp, char *errmsg, size_t errmsg_buflen)
static rb_pid_t | rb_spawn_internal (int argc, VALUE *argv, char *errmsg, size_t errmsg_buflen)
rb_pid_t | rb_spawn_err (int argc, VALUE *argv, char *errmsg, size_t errmsg_buflen)
rb_pid_t | rb_spawn (int argc, VALUE *argv)
static VALUE | rb_f_system (int argc, VALUE *argv)
static VALUE | rb_f_spawn (int argc, VALUE *argv)
static VALUE | rb_f_sleep (int argc, VALUE *argv)
static VALUE | proc_getuid (VALUE obj)
static VALUE | p_uid_change_privilege (VALUE obj, VALUE id)
static VALUE | proc_getgid (VALUE obj)
static VALUE | p_gid_change_privilege (VALUE obj, VALUE id)
static VALUE | proc_geteuid (VALUE obj)
static rb_uid_t | rb_seteuid_core (rb_uid_t euid)
static VALUE | p_uid_grant_privilege (VALUE obj, VALUE id)
static VALUE | proc_getegid (VALUE obj)
static rb_gid_t | rb_setegid_core (rb_gid_t egid)
static VALUE | p_gid_grant_privilege (VALUE obj, VALUE id)
static VALUE | p_uid_exchangeable (void)
static VALUE | p_uid_exchange (VALUE obj)
static VALUE | p_gid_exchangeable (void)
static VALUE | p_gid_exchange (VALUE obj)
static VALUE | p_uid_have_saved_id (void)
static VALUE | p_uid_sw_ensure (VALUE obj)
static VALUE | p_uid_switch (VALUE obj)
static VALUE | p_gid_have_saved_id (void)
static VALUE | p_gid_sw_ensure (VALUE obj)
static VALUE | p_gid_switch (VALUE obj)
void | Init_process (void)

## Variables
static VALUE | rb_cProcessStatus
static st_table * | pid_tbl
static int | forked_child = 0
static const rb_data_type_t | exec_arg_data_type
static int | under_uid_switch = 0
static int | under_gid_switch = 0
static rb_uid_t | SAVED_USER_ID = -1
static rb_gid_t | SAVED_GROUP_ID = -1
VALUE | rb_mProcess
VALUE | rb_mProcUID
VALUE | rb_mProcGID
VALUE | rb_mProcID_Syscall

## Macro Definition Documentation

#define after_fork | ( |  | ) | (rb_threadptr_pending_interrupt_clear(GET_THREAD()), after_exec())

Definition at line 1115 of file process.c.

#define ALLOC_ARGV | ( |  | n,
|  |  | v
| ) |  | ALLOCV_N(char*, (v), ARGV_COUNT(n))

Referenced by rb_proc_exec_n().

#define ARGV_COUNT | ( |  | n | ) | ((n)+1)

#define ARGV_SIZE | ( |  | n | ) | (sizeof(char*) * ARGV_COUNT(n))

#define before_fork | ( |  | ) | before_exec()

Definition at line 1114 of file process.c.

#define CHILD_ERRMSG_BUFLEN 80

Referenced by rb_f_exec(), and rb_f_spawn().

#define ERRMSG | ( |  | str | ) | do { if (errmsg && 0 < errmsg_buflen) strlcpy(errmsg, (str), errmsg_buflen); } while (0)

Definition at line 2411 of file process.c.

Referenced by rb_execarg_run_options(), run_exec_close(), run_exec_dup2(), run_exec_dup2_child(), run_exec_open(), and save_redirect_fd().

#define EXIT_FAILURE 1

Definition at line 44 of file process.c.

Referenced by exit_status_code(), rb_f_abort(), and rb_f_exit_bang().

#define EXIT_SUCCESS 0

Definition at line 41 of file process.c.

Referenced by exit_status_code(), pst_success_p(), rb_f_exit(), and rb_f_system().

#define MAXPATHLEN 1024

Definition at line 57 of file process.c.

Referenced by proc_exec_sh(), proc_exec_v(), and rb_exec_fillarg().

#define NO_WAITPID

Definition at line 654 of file process.c.

#define numberof | ( |  | array | ) | (int)(sizeof(array)/sizeof((array)[0]))

Definition at line 83 of file process.c.

Referenced by rb_exec_fillarg().

#define OBJ2GID | ( |  | id | ) | NUM2GIDT(id)

Definition at line 188 of file process.c.

Referenced by p_gid_change_privilege(), p_gid_grant_privilege(), and rb_execarg_addopt().

#define OBJ2UID | ( |  | id | ) | NUM2UIDT(id)

Definition at line 164 of file process.c.

Referenced by p_uid_change_privilege(), p_uid_grant_privilege(), and rb_execarg_addopt().

#define p_gid_from_name p_gid_from_name

Definition at line 191 of file process.c.

Referenced by Init_process().

#define p_gid_from_name rb_f_notimplement

Definition at line 191 of file process.c.

#define P_NOWAIT _P_NOWAIT

Definition at line 1369 of file process.c.

Referenced by check_spawn_mode().

#define p_sys_issetugid rb_f_notimplement

Definition at line 5347 of file process.c.

Referenced by Init_process().

#define p_sys_setegid rb_f_notimplement

Definition at line 5269 of file process.c.

Referenced by Init_process().

#define p_sys_seteuid rb_f_notimplement

Definition at line 4889 of file process.c.

Referenced by Init_process().

#define p_sys_setgid rb_f_notimplement

Definition at line 5223 of file process.c.

Referenced by Init_process().

#define p_sys_setregid rb_f_notimplement

Definition at line 5294 of file process.c.

Referenced by Init_process().

#define p_sys_setresgid rb_f_notimplement

Definition at line 5318 of file process.c.

Referenced by Init_process().

#define p_sys_setresuid rb_f_notimplement

Definition at line 4939 of file process.c.

Referenced by Init_process().

#define p_sys_setreuid rb_f_notimplement

Definition at line 4914 of file process.c.

Referenced by Init_process().

#define p_sys_setrgid rb_f_notimplement

Definition at line 5246 of file process.c.

Referenced by Init_process().

#define p_sys_setruid rb_f_notimplement

Definition at line 4866 of file process.c.

Referenced by Init_process().

#define p_sys_setuid rb_f_notimplement

Definition at line 4843 of file process.c.

Referenced by Init_process().

#define p_uid_from_name p_uid_from_name

Definition at line 167 of file process.c.

Referenced by Init_process().

#define p_uid_from_name rb_f_notimplement

Definition at line 167 of file process.c.

#define PREPARE_GETGRNAM /* do nothing */

Definition at line 187 of file process.c.

Referenced by p_gid_change_privilege(), p_gid_grant_privilege(), and rb_execarg_addopt().

#define PREPARE_GETPWNAM /* do nothing */

Definition at line 163 of file process.c.

Referenced by p_uid_change_privilege(), p_uid_grant_privilege(), and rb_execarg_addopt().

#define preserving_errno | ( |  | stmts | ) | do {int saved_errno = errno; stmts; errno = saved_errno;} while (0)

Definition at line 136 of file process.c.

Referenced by proc_exec_cmd(), proc_exec_v(), rb_exec(), rb_exec_async_signal_safe(), rb_exec_without_timer_thread(), and rb_proc_exec().

#define proc_daemon rb_f_notimplement

Definition at line 5699 of file process.c.

Referenced by Init_process().

#define proc_getgroups rb_f_notimplement

Definition at line 5494 of file process.c.

Referenced by Init_process().

#define proc_getmaxgroups rb_f_notimplement

Definition at line 5591 of file process.c.

Referenced by Init_process().

#define proc_getpgid rb_f_notimplement

Definition at line 4194 of file process.c.

Referenced by Init_process().

#define proc_getpgrp rb_f_notimplement

Definition at line 4139 of file process.c.

Referenced by Init_process().

#define proc_getpriority rb_f_notimplement

Definition at line 4350 of file process.c.

Referenced by Init_process().

#define proc_getrlimit rb_f_notimplement

Definition at line 4618 of file process.c.

Referenced by Init_process().

#define proc_getsid rb_f_notimplement

Definition at line 4254 of file process.c.

Referenced by Init_process().

#define proc_initgroups rb_f_notimplement

Definition at line 5571 of file process.c.

Referenced by Init_process().

#define proc_setegid_m rb_f_notimplement

Definition at line 6094 of file process.c.

Referenced by Init_process().

#define proc_seteuid_m rb_f_notimplement

Definition at line 5962 of file process.c.

Referenced by Init_process().

#define proc_setgid rb_f_notimplement

Definition at line 5406 of file process.c.

Referenced by Init_process().

#define proc_setgroups rb_f_notimplement

Definition at line 5539 of file process.c.

Referenced by Init_process().

#define proc_setmaxgroups rb_f_notimplement

Definition at line 5623 of file process.c.

Referenced by Init_process().

#define proc_setpgid rb_f_notimplement

Definition at line 4220 of file process.c.

Referenced by Init_process().

#define proc_setpgrp rb_f_notimplement

Definition at line 4168 of file process.c.

Referenced by Init_process().

#define proc_setpriority rb_f_notimplement

Definition at line 4382 of file process.c.

Referenced by Init_process().

#define proc_setrlimit rb_f_notimplement

Definition at line 4694 of file process.c.

Referenced by Init_process().

#define proc_setsid rb_f_notimplement

Definition at line 4313 of file process.c.

Referenced by Init_process().

#define proc_setuid rb_f_notimplement

Definition at line 4999 of file process.c.

Referenced by Init_process().

#define PST2INT | ( |  | st | ) | NUM2INT(pst_to_i(st))

Definition at line 309 of file process.c.

Referenced by pst_bitand(), pst_inspect(), pst_rshift(), pst_success_p(), pst_to_s(), pst_wcoredump(), pst_wexitstatus(), pst_wifexited(), pst_wifsignaled(), pst_wifstopped(), pst_wstopsig(), pst_wtermsig(), and rb_f_system().

#define rb_f_fork rb_f_notimplement

Definition at line 3474 of file process.c.

Referenced by Init_process().

#define rb_proc_times rb_f_notimplement

Definition at line 6554 of file process.c.

Referenced by Init_process().

#define redirect_close | ( |  | fd | ) | close(fd)

Definition at line 2488 of file process.c.

Referenced by run_exec_close(), run_exec_dup2(), and run_exec_open().

#define redirect_dup | ( |  | oldfd | ) | dup(oldfd)

Definition at line 2448 of file process.c.

Referenced by run_exec_dup2(), and save_redirect_fd().

#define redirect_dup2 | ( |  | oldfd,
|  |  | newfd
| ) |  | dup2((oldfd), (newfd))

Definition at line 2465 of file process.c.

Referenced by run_exec_dup2(), run_exec_dup2_child(), and run_exec_open().

#define redirect_open | ( |  | pathname,
|  |  | flags,
|  |  | perm
| ) |  | open((pathname), (flags), (perm))

Definition at line 2489 of file process.c.

Referenced by run_exec_open().

#define try_with_sh | ( |  | prog,
|  |  | argv,
|  |  | envp
| ) |  | (void)0

Definition at line 1145 of file process.c.

Referenced by proc_exec_cmd(), and proc_exec_v().

#define USE_SPAWNV 0

Definition at line 1366 of file process.c.

#define WEXITSTATUS | ( |  | w | ) | (((w) >> 8) & 0xff)

Definition at line 99 of file process.c.

Referenced by pst_message(), pst_success_p(), and pst_wexitstatus().

#define WIFEXITED | ( |  | w | ) | (((w) & 0xff) == 0)

Definition at line 90 of file process.c.

Referenced by pst_message(), pst_success_p(), pst_wexitstatus(), and pst_wifexited().

#define WIFSIGNALED | ( |  | w | ) | (((w) & 0x7f) > 0 && (((w) & 0x7f) < 0x7f))

Definition at line 93 of file process.c.

Referenced by pst_message(), pst_wifsignaled(), and pst_wtermsig().

#define WIFSTOPPED | ( |  | w | ) | (((w) & 0xff) == 0x7f)

Definition at line 96 of file process.c.

Referenced by pst_message(), pst_wifstopped(), and pst_wstopsig().

#define WSTOPSIG WEXITSTATUS

Definition at line 105 of file process.c.

Referenced by pst_message(), and pst_wstopsig().

#define WTERMSIG | ( |  | w | ) | ((w) & 0x7f)

Definition at line 102 of file process.c.

Referenced by pst_message(), and pst_wtermsig().

## Function Documentation

static void after_exec | ( | void |  | ) |
| static

Definition at line 1108 of file process.c.

References after_exec_async_signal_safe(), and after_exec_non_async_signal_safe().

Referenced by proc_exec_v(), and rb_proc_exec().

static void after_exec_async_signal_safe | ( | void |  | ) |
| static

Definition at line 1091 of file process.c.

References signal().

Referenced by after_exec(), and rb_exec_async_signal_safe().

static void after_exec_non_async_signal_safe | ( | void |  | ) |
| static

Definition at line 1099 of file process.c.

References forked_child, rb_thread_reset_timer_thread(), and rb_thread_start_timer_thread().

Referenced by after_exec(), and rb_exec_without_timer_thread().

static void before_exec | ( | void |  | ) |
| static

Definition at line 1083 of file process.c.

References before_exec_async_signal_safe(), and before_exec_non_async_signal_safe().

Referenced by proc_exec_v(), and rb_proc_exec().

static void before_exec_async_signal_safe | ( | void |  | ) |
| static

Definition at line 1054 of file process.c.

References signal().

Referenced by before_exec(), and rb_exec_async_signal_safe().

static void before_exec_non_async_signal_safe | ( | void |  | ) |
| static

Definition at line 1068 of file process.c.

References forked_child, and rb_thread_stop_timer_thread().

Referenced by before_exec(), and rb_exec_without_timer_thread().

static int check_exec_env_i | ( | st_data_t | st_key,
|  | st_data_t | st_val,
|  | st_data_t | arg
| ) |  |
| static

Definition at line 1909 of file process.c.

References env, hide_obj(), key, NIL_P(), rb_ary_push(), rb_assoc_new(), rb_eArgError, rb_raise(), ST_CONTINUE, strchr(), StringValueCStr, and val.

Referenced by rb_check_exec_env().

static VALUE check_exec_fds | ( | struct rb_execarg * | eargp | ) |
| static

Definition at line 1841 of file process.c.

References ary, check_exec_fds_1(), rb_execarg::close_others_maxhint, depth, rb_execarg::fd_close, rb_execarg::fd_dup2, rb_execarg::fd_dup2_child, rb_execarg::fd_open, FIX2INT, FIXNUM_P, i, INT2FIX, Qtrue, RARRAY_LEN, RARRAY_PTR(), rb_ary_store(), rb_eArgError, rb_hash_aset(), rb_hash_lookup, rb_hash_new(), rb_raise(), and val.

Referenced by rb_execarg_fixup().

static int check_exec_fds_1 | ( | struct rb_execarg * | eargp,
|  | VALUE | h,
|  | int | maxhint,
|  | VALUE | ary
| ) |  |
| static

Definition at line 1811 of file process.c.

References rb_execarg::fd_dup2, rb_execarg::fd_dup2_child, rb_execarg::fd_open, FIX2INT, i, INT2FIX, Qfalse, Qtrue, RARRAY_LEN, RARRAY_PTR(), rb_eArgError, rb_hash_aset(), rb_hash_lookup, rb_raise(), and RTEST.

Referenced by check_exec_fds().

static int check_exec_options_i | ( | st_data_t | st_key,
|  | st_data_t | st_val,
|  | st_data_t | arg
| ) |  |
| static

Definition at line 1781 of file process.c.

References key, PRIsVALUE, rb_eArgError, rb_execarg_addopt(), rb_raise(), ST_CONTINUE, SYMBOL_P, and val.

Referenced by rb_check_exec_options().

static int check_exec_options_i_extract | ( | st_data_t | st_key,
|  | st_data_t | st_val,
|  | st_data_t | arg
| ) |  |
| static

Definition at line 1796 of file process.c.

References args, key, NIL_P(), rb_execarg_addopt(), rb_hash_aset(), rb_hash_new(), ST_CONTINUE, and val.

Referenced by rb_execarg_extract_options().

static void check_exec_redirect | ( | VALUE | key,
|  | VALUE | val,
|  | struct rb_execarg * | eargp
| ) |  |
| static

Definition at line 1512 of file process.c.

References check_exec_redirect1(), check_exec_redirect_fd(), rb_execarg::fd_close, rb_execarg::fd_dup2, rb_execarg::fd_dup2_child, rb_execarg::fd_open, FilePathValue, FIX2INT, FIXNUM_P, flags, hide_obj(), id, INT2FIX, INT2NUM, io, NIL_P(), param, path, perm, Qnil, RARRAY_LEN, rb_ary_entry(), rb_ary_new3(), rb_eArgError, rb_id2name(), rb_intern, rb_io_check_io(), rb_io_modestr_oflags(), rb_raise(), rb_str_dup(), rb_to_int(), RB_TYPE_P, StringValueCStr, SYM2ID, SYMBOL_P, T_ARRAY, T_FILE, T_FIXNUM, T_STRING, T_SYMBOL, tmp, TYPE, and val.

Referenced by rb_execarg_addopt().

static VALUE check_exec_redirect1 | ( | VALUE | ary,
|  | VALUE | key,
|  | VALUE | param
| ) |  |
| static

Definition at line 1490 of file process.c.

References ary, check_exec_redirect_fd(), hide_obj(), i, n, NIL_P(), Qfalse, RARRAY_LEN, RARRAY_PTR(), rb_ary_new(), rb_ary_push(), rb_assoc_new(), RB_TYPE_P, T_ARRAY, and v.

Referenced by check_exec_redirect().

static VALUE check_exec_redirect_fd | ( | VALUE | v,
|  | int | iskey
| ) |  |
| static

Definition at line 1449 of file process.c.

References rb_io_t::fd, FIX2INT, FIXNUM_P, GetOpenFile, INT2FIX, NIL_P(), rb_check_convert_type(), rb_eArgError, rb_intern, rb_raise(), SYM2ID, SYMBOL_P, T_FILE, rb_io_t::tied_io_for_writing, and tmp.

Referenced by check_exec_redirect(), and check_exec_redirect1().

static void check_gid_switch | ( | void |  | ) |
| static

Definition at line 4709 of file process.c.

References rb_eRuntimeError, rb_raise(), and rb_secure().

Referenced by p_gid_change_privilege(), p_gid_exchange(), p_gid_switch(), rb_execarg_addopt(), and rb_setegid_core().

static void check_uid_switch | ( | void |  | ) |
| static

Definition at line 4699 of file process.c.

References rb_eRuntimeError, rb_raise(), and rb_secure().

Referenced by p_uid_change_privilege(), p_uid_exchange(), p_uid_switch(), rb_execarg_addopt(), and rb_seteuid_core().

static int compare_posix_sh | ( | const void * | key,
|  | const void * | el
| ) |  |
| static

Definition at line 2009 of file process.c.

References key, string_part::len, string_part::ptr, and ret.

Referenced by rb_exec_fillarg().

static VALUE detach_process_pid | ( | VALUE | thread | ) |
| static

Definition at line 958 of file process.c.

References id_pid(), and rb_thread_local_aref().

Referenced by rb_detach_process().

static VALUE detach_process_watcher | ( | void * | arg | ) |
| static

Definition at line 964 of file process.c.

References arg, wait_data::pid, rb_last_status_get(), rb_waitpid(), and status.

Referenced by rb_detach_process().

static int exit_status_code | ( | VALUE | status | ) |
| static

Definition at line 3478 of file process.c.

References EXIT_FAILURE, EXIT_SUCCESS, NUM2INT, Qfalse, and Qtrue.

Referenced by rb_f_exit(), and rb_f_exit_bang().

static int fill_envp_buf_i | ( | st_data_t | st_key,
|  | st_data_t | st_val,
|  | st_data_t | arg
| ) |  |
| static

Definition at line 2236 of file process.c.

References rb_execarg::envp_buf, key, rb_str_buf_cat(), rb_str_buf_cat2(), ST_CONTINUE, StringValueCStr, and val.

Referenced by rb_execarg_fixup().

static void free_exec_arg | ( | void * | ptr | ) |
| static

Definition at line 1343 of file process.c.

References xfree.

static VALUE get_pid | ( | void |  | ) |
| static

Definition at line 206 of file process.c.

References PIDT2NUM, and rb_secure().

Referenced by Init_process().

static VALUE get_ppid | ( | void |  | ) |
| static

Definition at line 230 of file process.c.

References PIDT2NUM, and rb_secure().

Referenced by Init_process().

static VALUE hide_obj | ( | VALUE | obj | ) |
| static

Definition at line 1442 of file process.c.

References obj, and RBASIC.

Referenced by check_exec_env_i(), check_exec_redirect(), check_exec_redirect1(), rb_check_exec_env(), rb_exec_fillarg(), rb_execarg_addopt(), rb_execarg_fixup(), rb_execarg_new(), rb_execarg_run_options(), save_env(), save_env_i(), and save_redirect_fd().

static ID id_pid | ( | void |  | ) |
| inline static

Definition at line 950 of file process.c.

References CONST_ID, and wait_data::pid.

Referenced by detach_process_pid(), and rb_detach_process().

void Init_process | ( | void |  | ) |

Definition at line 6569 of file process.c.

References CLASS_OF, get_pid(), get_ppid(), getegid(), geteuid(), inf, INT2FIX, NULL, p_gid_change_privilege(), p_gid_exchange(), p_gid_exchangeable(), p_gid_from_name, p_gid_grant_privilege(), p_gid_have_saved_id(), p_gid_switch(), p_sys_issetugid, p_sys_setegid, p_sys_seteuid, p_sys_setgid, p_sys_setregid, p_sys_setresgid, p_sys_setresuid, p_sys_setreuid, p_sys_setrgid, p_sys_setruid, p_sys_setuid, p_uid_change_privilege(), p_uid_exchange(), p_uid_exchangeable(), p_uid_from_name, p_uid_grant_privilege(), p_uid_have_saved_id(), p_uid_switch(), proc_daemon, proc_detach(), proc_getegid(), proc_geteuid(), proc_getgid(), proc_getgroups, proc_getmaxgroups, proc_getpgid, proc_getpgrp, proc_getpriority, proc_getrlimit, proc_getsid, proc_getuid(), proc_initgroups, proc_setegid_m, proc_seteuid_m, proc_setgid, proc_setgroups, proc_setmaxgroups, proc_setpgid, proc_setpgrp, proc_setpriority, proc_setrlimit, proc_setsid, proc_setuid, proc_wait(), proc_wait2(), proc_waitall(), pst_bitand(), pst_equal(), pst_inspect(), pst_pid(), pst_rshift(), pst_success_p(), pst_to_i(), pst_to_s(), pst_wcoredump(), pst_wexitstatus(), pst_wifexited(), pst_wifsignaled(), pst_wifstopped(), pst_wstopsig(), pst_wtermsig(), rb_cObject, rb_cProcessStatus, rb_define_alias(), rb_define_class_under(), rb_define_const(), rb_define_global_function(), rb_define_method(), rb_define_module(), rb_define_module_function(), rb_define_module_under(), rb_define_singleton_method(), rb_define_virtual_variable(), rb_f_abort(), rb_f_exec(), rb_f_exit(), rb_f_exit_bang(), rb_f_fork, rb_f_kill(), rb_f_sleep(), rb_f_spawn(), rb_f_system(), rb_last_status_get(), rb_proc_times, rb_singleton_class(), rb_struct_define(), rb_undef_method(), and WNOHANG.

static int intcmp | ( | const void * | a,
|  | const void * | b
| ) |  |
| static

Definition at line 2525 of file process.c.

References b.

Referenced by run_exec_dup2().

static int intrcmp | ( | const void * | a,
|  | const void * | b
| ) |  |
| static

Definition at line 2531 of file process.c.

References a.

Referenced by run_exec_dup2().

static void mark_exec_arg | ( | void * | ptr | ) |
| static

Definition at line 1318 of file process.c.

References rb_execarg::chdir_dir, rb_execarg::cmd, rb_execarg::dup2_tmpbuf, rb_execarg::env_modification, rb_execarg::envp_buf, rb_execarg::envp_str, rb_execarg::fd_close, rb_execarg::fd_dup2, rb_execarg::fd_dup2_child, rb_execarg::fd_open, rb_execarg::invoke, ptr, rb_gc_mark(), rb_execarg::redirect_fds, rb_execarg::rlimit_limits, rb_execarg::sh, and rb_execarg::use_shell.

static size_t memsize_exec_arg | ( | const void * | ptr | ) |
| static

Definition at line 1349 of file process.c.

static VALUE p_gid_change_privilege | ( | VALUE | obj,
|  | VALUE | id
| ) |  |
| static

Definition at line 5743 of file process.c.

References check_gid_switch(), EPERM, errno, getegid(), geteuid(), getgid(), id, OBJ2GID, PREPARE_GETGRNAM, rb_notimplement(), rb_sys_fail(), setegid(), setgid(), and void.

Referenced by Init_process().

static VALUE p_gid_exchange | ( | VALUE | obj | ) |
| static

Definition at line 6257 of file process.c.

References check_gid_switch(), getegid(), getgid(), GIDT2NUM, rb_notimplement(), and rb_sys_fail().

Referenced by Init_process(), p_gid_sw_ensure(), and p_gid_switch().

static VALUE p_gid_exchangeable | ( | void |  | ) |
| static

Definition at line 6232 of file process.c.

References Qfalse, and Qtrue.

Referenced by Init_process().

static VALUE p_gid_grant_privilege | ( | VALUE | obj,
|  | VALUE | id
| ) |  |
| static

Definition at line 6152 of file process.c.

References id, OBJ2GID, PREPARE_GETGRNAM, and rb_setegid_core().

Referenced by Init_process().

static VALUE p_gid_have_saved_id | ( | void |  | ) |
| static

Definition at line 6411 of file process.c.

References Qfalse, and Qtrue.

Referenced by Init_process().

static VALUE p_gid_sw_ensure | ( | VALUE | obj | ) |
| static

Definition at line 6482 of file process.c.

References p_gid_exchange().

Referenced by p_gid_switch().

static VALUE p_gid_switch | ( | VALUE | obj | ) |
| static

Definition at line 6489 of file process.c.

References check_gid_switch(), EPERM, errno, getegid(), getgid(), GIDT2NUM, p_gid_exchange(), p_gid_sw_ensure(), Qnil, rb_block_given_p(), rb_ensure(), rb_sys_fail(), and rb_yield().

Referenced by Init_process().

static VALUE p_uid_change_privilege | ( | VALUE | obj,
|  | VALUE | id
| ) |  |
| static

Definition at line 5044 of file process.c.

References check_uid_switch(), EPERM, errno, geteuid(), getuid(), id, OBJ2UID, PREPARE_GETPWNAM, rb_notimplement(), rb_sys_fail(), seteuid(), setuid(), and void.

Referenced by Init_process().

static VALUE p_uid_exchange | ( | VALUE | obj | ) |
| static

Definition at line 6195 of file process.c.

References check_uid_switch(), geteuid(), getuid(), rb_notimplement(), rb_sys_fail(), and UIDT2NUM.

Referenced by Init_process(), p_uid_sw_ensure(), and p_uid_switch().

static VALUE p_uid_exchangeable | ( | void |  | ) |
| static

Definition at line 6170 of file process.c.

References Qfalse, and Qtrue.

Referenced by Init_process().

static VALUE p_uid_grant_privilege | ( | VALUE | obj,
|  | VALUE | id
| ) |  |
| static

Definition at line 6020 of file process.c.

References id, OBJ2UID, PREPARE_GETPWNAM, and rb_seteuid_core().

Referenced by Init_process().

static VALUE p_uid_have_saved_id | ( | void |  | ) |
| static

Definition at line 6295 of file process.c.

References Qfalse, and Qtrue.

Referenced by Init_process().

static VALUE p_uid_sw_ensure | ( | VALUE | obj | ) |
| static

Definition at line 6367 of file process.c.

References p_uid_exchange().

Referenced by p_uid_switch().

static VALUE p_uid_switch | ( | VALUE | obj | ) |
| static

Definition at line 6374 of file process.c.

References check_uid_switch(), EPERM, errno, geteuid(), getuid(), p_uid_exchange(), p_uid_sw_ensure(), Qnil, rb_block_given_p(), rb_ensure(), rb_sys_fail(), rb_yield(), and UIDT2NUM.

Referenced by Init_process().

static VALUE proc_detach | ( | VALUE | obj,
|  | VALUE | pid
| ) |  |
| static

Definition at line 1033 of file process.c.

References NUM2PIDT, rb_detach_process(), and rb_secure().

Referenced by Init_process().

static int proc_exec_cmd | ( | const char * | prog,
|  | VALUE | argv_str,
|  | VALUE | envp_str
| ) |  |
| static

Definition at line 1150 of file process.c.

References ALLOC_N, argv, ARGVSTR2ARGV, dln_find_exe_r(), errno, execv(), fbuf, n, NULL, p, preserving_errno, rb_notimplement(), RSTRING_PTR, STRCASECMP, strcpy(), strlen(), strrchr(), try_with_sh, UNREACHABLE, and xfree.

Referenced by rb_exec_async_signal_safe().

static int proc_exec_sh | ( | const char * | str,
|  | VALUE | envp_str
| ) |  |
| static

Definition at line 1263 of file process.c.

References dln_find_exe_r(), errno, execl(), fbuf, MAXPATHLEN, NULL, rb_notimplement(), rb_w32_spawn(), RSTRING_PTR, s, shell, status, str, and UNREACHABLE.

Referenced by rb_exec_async_signal_safe(), and rb_proc_exec().

static int proc_exec_v | ( | char ** | argv,
|  | const char * | prog
| ) |  |
| static

Definition at line 1215 of file process.c.

References after_exec(), before_exec(), dln_find_exe_r(), errno, execv(), fbuf, MAXPATHLEN, preserving_errno, and try_with_sh.

Referenced by rb_proc_exec_n().

static VALUE proc_getegid | ( | VALUE | obj | ) |
| static

Definition at line 6041 of file process.c.

References getegid(), and GIDT2NUM.

Referenced by Init_process().

static VALUE proc_geteuid | ( | VALUE | obj | ) |
| static

Definition at line 5915 of file process.c.

References geteuid(), and UIDT2NUM.

Referenced by Init_process().

static VALUE proc_getgid | ( | VALUE | obj | ) |
| static

Definition at line 5363 of file process.c.

References getgid(), and GIDT2NUM.

Referenced by Init_process().

static VALUE proc_getuid | ( | VALUE | obj | ) |
| static

Definition at line 4955 of file process.c.

References getuid(), and UIDT2NUM.

Referenced by Init_process().

static VALUE proc_wait | ( | int | argc,
|  | VALUE * | argv
| ) |  |
| static

Definition at line 834 of file process.c.

References flags, NIL_P(), NUM2PIDT, NUM2UINT, wait_data::pid, PIDT2NUM, Qnil, rb_last_status_clear(), rb_scan_args(), rb_secure(), rb_sys_fail(), rb_waitpid(), and status.

Referenced by Init_process(), and proc_wait2().

static VALUE proc_wait2 | ( | int | argc,
|  | VALUE * | argv
| ) |  |
| static

Definition at line 879 of file process.c.

References NIL_P(), wait_data::pid, proc_wait(), Qnil, rb_assoc_new(), and rb_last_status_get().

Referenced by Init_process().

static VALUE proc_waitall | ( | void |  | ) |
| static

Definition at line 908 of file process.c.

References errno, wait_data::pid, PIDT2NUM, rb_ary_new(), rb_ary_push(), rb_assoc_new(), rb_last_status_clear(), rb_last_status_get(), rb_last_status_set(), rb_secure(), rb_sys_fail(), rb_thread_schedule(), rb_waitpid(), result, st_foreach(), status, wait, and waitall_each().

Referenced by Init_process().

static VALUE pst_bitand | ( | VALUE | st1,
|  | VALUE | st2
| ) |  |
| static

Definition at line 451 of file process.c.

References INT2NUM, NUM2INT, PST2INT, and status.

Referenced by Init_process().

static VALUE pst_equal | ( | VALUE | st1,
|  | VALUE | st2
| ) |  |
| static

Definition at line 431 of file process.c.

References pst_to_i(), Qtrue, and rb_equal().

Referenced by Init_process().

static VALUE pst_inspect | ( | VALUE | st | ) |
| static

Definition at line 402 of file process.c.

References CLASS_OF, NIL_P(), NUM2PIDT, PST2INT, pst_message(), pst_pid(), rb_class2name(), rb_sprintf(), rb_str_cat2(), status, and str.

Referenced by Init_process().

static void pst_message | ( | VALUE | str,
|  | rb_pid_t | pid,
|  | int | status
| ) |  |
| static

Definition at line 329 of file process.c.

References rb_str_cat2(), rb_str_catf(), ruby_signal_name(), WEXITSTATUS, WIFEXITED, WIFSIGNALED, WIFSTOPPED, WSTOPSIG, and WTERMSIG.

Referenced by pst_inspect(), and pst_to_s().

static VALUE pst_pid | ( | VALUE | st | ) |
| static

Definition at line 323 of file process.c.

References rb_attr_get(), and rb_intern.

Referenced by Init_process(), pst_inspect(), and pst_to_s().

static VALUE pst_rshift | ( | VALUE | st1,
|  | VALUE | st2
| ) |  |
| static

Definition at line 472 of file process.c.

References INT2NUM, NUM2INT, PST2INT, and status.

Referenced by Init_process().

static VALUE pst_success_p | ( | VALUE | st | ) |
| static

Definition at line 620 of file process.c.

References EXIT_SUCCESS, PST2INT, Qfalse, Qnil, Qtrue, status, WEXITSTATUS, and WIFEXITED.

Referenced by Init_process().

static VALUE pst_to_i | ( | VALUE | st | ) |
| static

Definition at line 304 of file process.c.

References rb_iv_get().

Referenced by Init_process(), and pst_equal().

static VALUE pst_to_s | ( | VALUE | st | ) |
| static

Definition at line 375 of file process.c.

References NUM2PIDT, PST2INT, pst_message(), pst_pid(), rb_str_buf_new(), status, and str.

Referenced by Init_process().

static VALUE pst_wcoredump | ( | VALUE | st | ) |
| static

Definition at line 639 of file process.c.

References PST2INT, Qfalse, Qtrue, and status.

Referenced by Init_process().

static VALUE pst_wexitstatus | ( | VALUE | st | ) |
| static

Definition at line 601 of file process.c.

References INT2NUM, PST2INT, Qnil, status, WEXITSTATUS, and WIFEXITED.

Referenced by Init_process().

static VALUE pst_wifexited | ( | VALUE | st | ) |
| static

Definition at line 570 of file process.c.

References PST2INT, Qfalse, Qtrue, status, and WIFEXITED.

Referenced by Init_process().

static VALUE pst_wifsignaled | ( | VALUE | st | ) |
| static

Definition at line 529 of file process.c.

References PST2INT, Qfalse, Qtrue, status, and WIFSIGNALED.

Referenced by Init_process().

static VALUE pst_wifstopped | ( | VALUE | st | ) |
| static

Definition at line 490 of file process.c.

References PST2INT, Qfalse, Qtrue, status, and WIFSTOPPED.

Referenced by Init_process().

static VALUE pst_wstopsig | ( | VALUE | st | ) |
| static

Definition at line 510 of file process.c.

References INT2NUM, PST2INT, Qnil, status, WIFSTOPPED, and WSTOPSIG.

Referenced by Init_process().

static VALUE pst_wtermsig | ( | VALUE | st | ) |
| static

Definition at line 550 of file process.c.

References INT2NUM, PST2INT, Qnil, status, WIFSIGNALED, and WTERMSIG.

Referenced by Init_process().

static VALUE rb_check_argv | ( | int | argc,
|  | VALUE * | argv
| ) |  |
| static

Definition at line 1940 of file process.c.

References argc, i, name, NIL_P(), RARRAY_LEN, RARRAY_PTR(), rb_check_arity, rb_check_array_type(), rb_eArgError, rb_raise(), rb_str_new_frozen(), RSTRING_PTR, SafeStringValue, security(), StringValueCStr, tmp, and UNLIMITED_ARGUMENTS.

Referenced by rb_exec_getargs().

static VALUE rb_check_exec_env | ( | VALUE | hash | ) |
| static

Definition at line 1929 of file process.c.

References check_exec_env_i(), env, hide_obj(), rb_ary_new(), RHASH_TBL, and st_foreach().

Referenced by rb_exec_fillarg(), and rb_execarg_setenv().

static void rb_check_exec_options | ( | VALUE | opthash,
|  | VALUE | execarg_obj
| ) |  |
| static

Definition at line 1889 of file process.c.

References check_exec_options_i(), RHASH_EMPTY_P, RHASH_TBL, and st_foreach().

Referenced by rb_exec_fillarg().

VALUE rb_detach_process | ( | rb_pid_t | pid | ) |

Definition at line 976 of file process.c.

References detach_process_pid(), detach_process_watcher(), id_pid(), PIDT2NUM, rb_define_singleton_method(), rb_thread_create(), and rb_thread_local_aset().

Referenced by proc_detach(), and pty_detach_process().

int rb_exec | ( | const struct rb_exec_arg * | e | ) |

Definition at line 3068 of file process.c.

References rb_exec_arg::execarg_obj, NULL, preserving_errno, rb_exec_without_timer_thread(), rb_execarg_get(), rb_sourcefile, rb_sourceline(), ret, and RSTRING_PTR.

int rb_exec_arg_addopt | ( | struct rb_exec_arg * | e,
|  | VALUE | key,
|  | VALUE | val
| ) |  |

Definition at line 1775 of file process.c.

References rb_exec_arg::execarg_obj, and rb_execarg_addopt().

void rb_exec_arg_fixup | ( | struct rb_exec_arg * | e | ) |

Definition at line 2328 of file process.c.

References rb_exec_arg::execarg_obj, and rb_execarg_fixup().

VALUE rb_exec_arg_init | ( | int | argc,
|  | VALUE * | argv,
|  | int | accept_shell,
|  | struct rb_exec_arg * | e
| ) |  |

Definition at line 2222 of file process.c.

References rb_exec_arg::execarg_obj, and rb_execarg_init().

int rb_exec_async_signal_safe | ( | const struct rb_execarg * | eargp,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |

Definition at line 3019 of file process.c.

References after_exec_async_signal_safe(), before_exec_async_signal_safe(), rb_execarg::cmd, rb_execarg::envp_str, rb_execarg::invoke, NIL_P(), NULL, preserving_errno, proc_exec_cmd(), proc_exec_sh(), rb_execarg_run_options(), RSTRING_PTR, rb_execarg::sh, and rb_execarg::use_shell.

Referenced by chfunc(), rb_exec_without_timer_thread(), and rb_f_exec().

int rb_exec_err | ( | const struct rb_exec_arg * | e,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |

Definition at line 3062 of file process.c.

References rb_exec_arg::execarg_obj, rb_exec_without_timer_thread(), and rb_execarg_get().

static void rb_exec_fillarg | ( | VALUE | prog,
|  | int | argc,
|  | VALUE * | argv,
|  | VALUE | env,
|  | VALUE | opthash,
|  | VALUE | execarg_obj
| ) |  |
| static

Definition at line 2019 of file process.c.

References argc, rb_execarg::cmd, compare_posix_sh(), dln_find_exe_r(), env, rb_execarg::env_modification, hide_obj(), i, rb_execarg::invoke, string_part::len, MAXPATHLEN, MEMZERO, NIL_P(), NULL, numberof, p, string_part::ptr, Qnil, rb_check_exec_env(), rb_check_exec_options(), rb_execarg_get(), RB_GC_GUARD, rb_str_buf_cat(), rb_str_buf_cat2(), rb_str_buf_new(), rb_str_new_cstr(), RSTRING_LEN, RSTRING_PTR, rb_execarg::sh, strchr(), StringValueCStr, strlen(), and rb_execarg::use_shell.

Referenced by rb_execarg_init().

static VALUE rb_exec_getargs | ( | int * | argc_p,
|  | VALUE ** | argv_p,
|  | int | accept_shell,
|  | VALUE * | env_ret,
|  | VALUE * | opthash_ret
| ) |  |
| static

Definition at line 1971 of file process.c.

References hash, NIL_P(), rb_check_argv(), and rb_check_hash_type().

Referenced by rb_execarg_init().

static int rb_exec_without_timer_thread | ( | const struct rb_execarg * | eargp,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |
| static

Definition at line 3052 of file process.c.

References after_exec_non_async_signal_safe(), before_exec_non_async_signal_safe(), preserving_errno, rb_exec_async_signal_safe(), and ret.

Referenced by rb_exec(), rb_exec_err(), and rb_f_exec().

int rb_execarg_addopt | ( | VALUE | execarg_obj,
|  | VALUE | key,
|  | VALUE | val
| ) |  |

Definition at line 1606 of file process.c.

References ary, rb_execarg::chdir_dir, rb_execarg::chdir_given, check_exec_redirect(), check_gid_switch(), check_uid_switch(), rb_execarg::close_others_do, rb_execarg::close_others_given, FilePathValue, rb_execarg::gid, rb_execarg::gid_given, hide_obj(), id, INT2FIX, INT2NUM, mode_t, rb_execarg::new_pgroup_flag, rb_execarg::new_pgroup_given, NIL_P(), NUM2MODET, NUM2PIDT, OBJ2GID, OBJ2UID, rb_execarg::pgroup_given, rb_execarg::pgroup_pgid, PREPARE_GETGRNAM, PREPARE_GETPWNAM, Qfalse, Qtrue, RARRAY_LEN, rb_ary_entry(), rb_ary_new(), rb_ary_new3(), rb_ary_push(), rb_check_array_type(), rb_eArgError, rb_eNotImpError, rb_execarg_get(), RB_GC_GUARD, rb_id2name(), rb_intern, rb_raise(), rb_secure(), rb_str_dup(), rb_to_int(), rb_execarg::rlimit_limits, RTEST, ST_CONTINUE, ST_STOP, SYM2ID, T_ARRAY, T_FILE, T_FIXNUM, T_SYMBOL, tmp, TYPE, rb_execarg::uid, rb_execarg::uid_given, rb_execarg::umask_given, rb_execarg::umask_mask, rb_execarg::unsetenv_others_do, and rb_execarg::unsetenv_others_given.

Referenced by check_exec_options_i(), check_exec_options_i_extract(), pipe_open(), and rb_exec_arg_addopt().

VALUE rb_execarg_extract_options | ( | VALUE | execarg_obj,
|  | VALUE | opthash
| ) |  |

Definition at line 1897 of file process.c.

References args, check_exec_options_i_extract(), Qnil, RHASH_EMPTY_P, RHASH_TBL, and st_foreach().

Referenced by rb_io_s_popen().

void rb_execarg_fixup | ( | VALUE | execarg_obj | ) |

Definition at line 2254 of file process.c.

References ary, check_exec_fds(), rb_execarg::dup2_tmpbuf, rb_execarg::env_modification, rb_execarg::envp_buf, rb_execarg::envp_str, envtbl, rb_execarg::fd_dup2, fill_envp_buf_i(), hide_obj(), i, key, len, NIL_P(), NULL, p, pair, Qfalse, RARRAY_LEN, RARRAY_PTR(), rb_cObject, rb_const_get(), rb_convert_type(), rb_execarg_get(), RB_GC_GUARD, rb_hash_new(), rb_intern, rb_str_buf_cat(), rb_str_buf_new(), rb_str_new(), rb_str_set_len(), rb_execarg::redirect_fds, RHASH_SIZE, RHASH_TBL, RSTRING_LEN, RSTRING_PTR, run_exec_dup2_tmpbuf_size(), st_delete(), st_foreach(), st_insert(), strlen(), T_HASH, tmpbuf, rb_execarg::unsetenv_others_do, rb_execarg::unsetenv_others_given, and val.

Referenced by establishShell(), pipe_open(), rb_exec_arg_fixup(), rb_f_exec(), rb_f_spawn(), and rb_spawn_internal().

struct rb_execarg* rb_execarg_get | ( | VALUE | execarg_obj | ) |

Definition at line 2201 of file process.c.

References exec_arg_data_type, and TypedData_Get_Struct.

Referenced by establishShell(), pipe_open(), rb_exec(), rb_exec_err(), rb_exec_fillarg(), rb_execarg_addopt(), rb_execarg_fixup(), rb_execarg_init(), rb_execarg_setenv(), rb_f_exec(), rb_f_spawn(), rb_run_exec_options(), rb_run_exec_options_err(), and rb_spawn_internal().

VALUE rb_execarg_init | ( | int | argc,
|  | VALUE * | argv,
|  | int | accept_shell,
|  | VALUE | execarg_obj
| ) |  |

Definition at line 2209 of file process.c.

References rb_execarg::cmd, env, rb_execarg::invoke, Qnil, rb_exec_fillarg(), rb_exec_getargs(), rb_execarg_get(), RB_GC_GUARD, ret, rb_execarg::sh, and rb_execarg::use_shell.

Referenced by rb_exec_arg_init(), and rb_execarg_new().

VALUE rb_execarg_new | ( | int | argc,
|  | VALUE * | argv,
|  | int | accept_shell
| ) |  |

Definition at line 2190 of file process.c.

References exec_arg_data_type, hide_obj(), rb_cData, rb_execarg_init(), and TypedData_Make_Struct.

Referenced by establishShell(), pipe_open_s(), rb_f_exec(), rb_f_spawn(), rb_io_s_popen(), and rb_spawn_internal().

int rb_execarg_run_options | ( | const struct rb_execarg * | eargp,
|  | struct rb_execarg * | sargp,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |

Definition at line 2872 of file process.c.

References rb_execarg::chdir_dir, rb_execarg::chdir_given, rb_execarg::close_others_do, rb_execarg::close_others_given, rb_execarg::close_others_maxhint, rb_execarg::dup2_tmpbuf, rb_execarg::env_modification, ERRMSG, rb_execarg::fd_close, rb_execarg::fd_dup2, rb_execarg::fd_dup2_child, rb_execarg::fd_open, rb_execarg::gid, rb_execarg::gid_given, hide_obj(), i, key, len, MEMZERO, mode_t, my_getcwd, NIL_P(), obj, pair, rb_execarg::pgroup_given, Qfalse, Qnil, RARRAY_LEN, RARRAY_PTR(), rb_close_before_exec(), rb_env_clear(), rb_str_new(), rb_str_new2, rb_str_set_len(), rb_warn(), rb_execarg::redirect_fds, rb_execarg::rlimit_limits, RSTRING_PTR, ruby_setenv(), run_exec_close(), run_exec_dup2(), run_exec_dup2_child(), run_exec_dup2_tmpbuf_size(), run_exec_open(), save_env(), setgid(), setuid(), StringValueCStr, tmpbuf, rb_execarg::uid, rb_execarg::uid_given, umask(), rb_execarg::umask_given, rb_execarg::umask_mask, rb_execarg::unsetenv_others_do, rb_execarg::unsetenv_others_given, val, and xfree.

Referenced by pipe_open(), rb_exec_async_signal_safe(), rb_run_exec_options(), rb_run_exec_options_err(), and rb_spawn_process().

void rb_execarg_setenv | ( | VALUE | execarg_obj,
|  | VALUE | env
| ) |  |

Definition at line 2228 of file process.c.

References env, rb_execarg::env_modification, NIL_P(), Qfalse, rb_check_exec_env(), and rb_execarg_get().

Referenced by rb_io_s_popen().

void rb_exit | ( | int | status | ) |

Definition at line 3530 of file process.c.

References args, GET_THREAD(), INT2NUM, rb_class_new_instance(), rb_eSystemExit, rb_exc_raise(), rb_str_new2, and ruby_finalize().

Referenced by rb_f_abort(), rb_f_exit(), and rb_thread_kill().

VALUE rb_f_abort | ( | int | argc,
|  | VALUE * | argv
| ) |  |

Definition at line 3616 of file process.c.

References args, EXIT_FAILURE, GET_THREAD(), INT2NUM, NIL_P(), rb_class_new_instance(), rb_eSystemExit, rb_exc_raise(), rb_exit(), rb_io_puts(), rb_scan_args(), rb_secure(), rb_stderr, ruby_error_print(), StringValue, and UNREACHABLE.

Referenced by Init_process().

VALUE rb_f_exec | ( | int | argc,
|  | VALUE * | argv
| ) |  |

Definition at line 2387 of file process.c.

References CHILD_ERRMSG_BUFLEN, rb_execarg::cmd, rb_execarg::invoke, Qnil, rb_exec_async_signal_safe(), rb_exec_without_timer_thread(), rb_execarg_fixup(), rb_execarg_get(), rb_execarg_new(), RB_GC_GUARD, rb_sys_fail(), rb_sys_fail_str(), rb_execarg::sh, TRUE, and rb_execarg::use_shell.

Referenced by Init_process().

VALUE rb_f_exit | ( | int | argc,
|  | VALUE * | argv
| ) |  |

Definition at line 3586 of file process.c.

References exit_status_code(), EXIT_SUCCESS, rb_exit(), rb_scan_args(), rb_secure(), status, and UNREACHABLE.

Referenced by Init_process().

static VALUE rb_f_exit_bang | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | obj
| ) |  |
| static

Definition at line 3512 of file process.c.

References EXIT_FAILURE, exit_status_code(), rb_scan_args(), rb_secure(), status, and UNREACHABLE.

Referenced by Init_process().

static VALUE rb_f_sleep | ( | int | argc,
|  | VALUE * | argv
| ) |  |
| static

Definition at line 4091 of file process.c.

References end, INT2FIX, rb_check_arity, rb_thread_sleep_forever(), rb_thread_wait_for(), rb_time_interval(), and time.

Referenced by Init_process().

static VALUE rb_f_spawn | ( | int | argc,
|  | VALUE * | argv
| ) |  |
| static

Definition at line 4044 of file process.c.

References CHILD_ERRMSG_BUFLEN, rb_execarg::cmd, rb_execarg::invoke, PIDT2NUM, Qnil, rb_execarg_fixup(), rb_execarg_get(), rb_execarg_new(), RB_GC_GUARD, rb_spawn_process(), rb_sys_fail(), rb_sys_fail_str(), rb_execarg::sh, TRUE, and rb_execarg::use_shell.

Referenced by Init_process().

static VALUE rb_f_system | ( | int | argc,
|  | VALUE * | argv
| ) |  |
| static

Definition at line 3759 of file process.c.

References chfunc(), EXIT_SUCCESS, int, NULL, PST2INT, Qfalse, Qnil, Qtrue, rb_last_status_clear(), rb_last_status_get(), rb_spawn_internal(), rb_sys_fail(), rb_waitpid(), ret, signal(), and status.

Referenced by Init_process().

void rb_last_status_clear | ( | void |  | ) |

Definition at line 285 of file process.c.

References GET_THREAD(), rb_thread_struct::last_status, and Qnil.

Referenced by proc_wait(), proc_waitall(), rb_f_backquote(), rb_f_system(), and rb_io_close().

VALUE rb_last_status_get | ( | void |  | ) |

Definition at line 270 of file process.c.

References GET_THREAD(), and rb_thread_struct::last_status.

Referenced by detach_process_watcher(), Init_process(), proc_wait2(), proc_waitall(), pty_check(), raise_from_check(), rb_f_system(), and waitall_each().

void rb_last_status_set | ( | int | status,
|  | rb_pid_t | pid
| ) |  |

Definition at line 276 of file process.c.

References GET_THREAD(), INT2FIX, rb_thread_struct::last_status, PIDT2NUM, rb_cProcessStatus, rb_iv_set(), rb_obj_alloc(), and th.

Referenced by pipe_finalize(), proc_waitall(), rb_spawn_process(), rb_waitpid(), and waitall_each().

int rb_proc_exec | ( | const char * | str | ) |

Definition at line 1308 of file process.c.

References after_exec(), before_exec(), preserving_errno, proc_exec_sh(), Qfalse, and ret.

int rb_proc_exec_n | ( | int | argc,
|  | VALUE * | argv,
|  | const char * | prog
| ) |  |

Definition at line 1234 of file process.c.

References ALLOC_ARGV, ALLOCV_END, argc, args, i, proc_exec_v(), ret, RSTRING_PTR, and v.

int rb_run_exec_options | ( | const struct rb_exec_arg * | e,
|  | struct rb_exec_arg * | s
| ) |  |

Definition at line 3012 of file process.c.

References rb_exec_arg::execarg_obj, NULL, rb_execarg_get(), and rb_execarg_run_options().

int rb_run_exec_options_err | ( | const struct rb_exec_arg * | e,
|  | struct rb_exec_arg * | s,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |

Definition at line 3006 of file process.c.

References rb_exec_arg::execarg_obj, rb_execarg_get(), and rb_execarg_run_options().

static rb_gid_t rb_setegid_core | ( | rb_gid_t | egid | ) |
| static

Definition at line 6098 of file process.c.

References check_gid_switch(), geteuid(), getgid(), rb_notimplement(), rb_sys_fail(), setegid(), and setgid().

Referenced by p_gid_grant_privilege().

static rb_uid_t rb_seteuid_core | ( | rb_uid_t | euid | ) |
| static

Definition at line 5966 of file process.c.

References check_uid_switch(), geteuid(), getuid(), rb_notimplement(), rb_sys_fail(), seteuid(), and setuid().

Referenced by p_uid_grant_privilege().

rb_pid_t rb_spawn | ( | int | argc,
|  | VALUE * | argv
| ) |  |

Definition at line 3720 of file process.c.

References NULL, and rb_spawn_internal().

rb_pid_t rb_spawn_err | ( | int | argc,
|  | VALUE * | argv,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |

Definition at line 3714 of file process.c.

References rb_spawn_internal().

static rb_pid_t rb_spawn_internal | ( | int | argc,
|  | VALUE * | argv,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |
| static

Definition at line 3699 of file process.c.

References rb_execarg_fixup(), rb_execarg_get(), rb_execarg_new(), RB_GC_GUARD, rb_spawn_process(), ret, and TRUE.

Referenced by rb_f_system(), rb_spawn(), and rb_spawn_err().

static rb_pid_t rb_spawn_process | ( | struct rb_execarg * | eargp,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |
| static

Definition at line 3647 of file process.c.

References argc, ARGVSTR2ARGC, ARGVSTR2ARGV, rb_execarg::cmd, rb_execarg::invoke, NULL, rb_ary_join(), rb_ary_new4(), rb_execarg_run_options(), rb_fork_async_signal_safe(), rb_last_status_set(), rb_str_new2, rb_execarg::redirect_fds, RSTRING_PTR, rb_execarg::sh, status, StringValuePtr, and rb_execarg::use_shell.

Referenced by rb_f_spawn(), and rb_spawn_internal().

void rb_syswait | ( | rb_pid_t | pid | ) |

Definition at line 3639 of file process.c.

References rb_waitpid(), and status.

Referenced by rb_io_close().

rb_pid_t rb_waitpid | ( | rb_pid_t | pid,
|  | int * | st,
|  | int | flags
| ) |  |

Definition at line 707 of file process.c.

References errno, flags, GET_THREAD(), wait_data::pid, rb_eArgError, rb_last_status_set(), rb_raise(), rb_thread_alone(), rb_thread_blocking_region(), rb_thread_call_without_gvl(), rb_thread_schedule(), rb_waitpid_blocking(), result, retry, RUBY_UBF_PROCESS, RUBY_VM_CHECK_INTS, st, st_delete(), st_foreach(), st_init_numtable(), st_insert(), wait_data::status, status, and wait_each().

Referenced by detach_process_watcher(), proc_wait(), proc_waitall(), pty_check(), rb_f_system(), and rb_syswait().

static void* rb_waitpid_blocking | ( | void * | data | ) |
| static

Definition at line 688 of file process.c.

References arg, data, NULL, result, wait, and waitpid().

Referenced by rb_waitpid().

static int run_exec_close | ( | VALUE | ary,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |
| static

Definition at line 2683 of file process.c.

References ERRMSG, FIX2INT, i, RARRAY_LEN, RARRAY_PTR(), redirect_close, and ret.

Referenced by rb_execarg_run_options().

static int run_exec_dup2 | ( | VALUE | ary,
|  | VALUE | tmpbuf,
|  | struct rb_execarg * | sargp,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |
| static

Definition at line 2551 of file process.c.

References ERRMSG, fail, fcntl(), FIX2INT, i, intcmp(), intrcmp(), n, run_exec_dup2_fd_pair::newfd, run_exec_dup2_fd_pair::num_newer, run_exec_dup2_fd_pair::older_index, run_exec_dup2_fd_pair::oldfd, RARRAY_LEN, RARRAY_PTR(), rb_update_max_fd(), redirect_close, redirect_dup, redirect_dup2, ret, RSTRING_PTR, and save_redirect_fd().

Referenced by rb_execarg_run_options().

static int run_exec_dup2_child | ( | VALUE | ary,
|  | struct rb_execarg * | sargp,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |
| static

Definition at line 2752 of file process.c.

References ERRMSG, FIX2INT, i, run_exec_dup2_fd_pair::newfd, run_exec_dup2_fd_pair::oldfd, RARRAY_LEN, RARRAY_PTR(), rb_update_max_fd(), redirect_dup2, ret, and save_redirect_fd().

Referenced by rb_execarg_run_options().

static long run_exec_dup2_tmpbuf_size | ( | long | n | ) |
| static

Definition at line 2544 of file process.c.

References n.

Referenced by rb_execarg_fixup(), and rb_execarg_run_options().

static int run_exec_open | ( | VALUE | ary,
|  | struct rb_execarg * | sargp,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |
| static

Definition at line 2702 of file process.c.

References ERRMSG, FIX2INT, i, NUM2INT, param, path, perm, RARRAY_LEN, RARRAY_PTR(), rb_update_max_fd(), redirect_close, redirect_dup2, redirect_open, ret, RSTRING_PTR, and save_redirect_fd().

Referenced by rb_execarg_run_options().

static void save_env | ( | struct rb_execarg * | sargp | ) |
| static

Definition at line 2852 of file process.c.

References ary, env, rb_execarg::env_modification, hide_obj(), Qfalse, rb_ary_new(), rb_block_call(), rb_cObject, rb_const_get(), rb_intern, RTEST, save_env_i(), rb_execarg::unsetenv_others_do, and rb_execarg::unsetenv_others_given.

Referenced by rb_execarg_run_options().

static VALUE save_env_i | ( | VALUE | i,
|  | VALUE | ary,
|  | int | argc,
|  | VALUE * | argv
| ) |  |
| static

Definition at line 2845 of file process.c.

References hide_obj(), Qnil, rb_ary_dup(), and rb_ary_push().

Referenced by save_env().

static int save_redirect_fd | ( | int | fd,
|  | struct rb_execarg * | sargp,
|  | char * | errmsg,
|  | size_t | errmsg_buflen
| ) |  |
| static

Definition at line 2493 of file process.c.

References ERRMSG, errno, rb_execarg::fd_close, rb_execarg::fd_dup2, hide_obj(), INT2FIX, Qfalse, Qnil, rb_ary_new(), rb_ary_push(), rb_assoc_new(), rb_update_max_fd(), and redirect_dup.

Referenced by run_exec_dup2(), run_exec_dup2_child(), and run_exec_open().

static void security | ( | const char * | str | ) |
| static

Definition at line 1120 of file process.c.

References rb_env_path_tainted(), rb_eSecurityError, rb_raise(), and rb_safe_level.

Referenced by rb_check_argv().

static int wait_each | ( | rb_pid_t | pid,
|  | int | status,
|  | struct wait_data * | data
| ) |  |
| static

Definition at line 663 of file process.c.

References wait_data::pid, ST_DELETE, ST_STOP, wait_data::status, and status.

Referenced by rb_waitpid().

static int waitall_each | ( | rb_pid_t | pid,
|  | int | status,
|  | VALUE | ary
| ) |  |
| static

Definition at line 673 of file process.c.

References PIDT2NUM, rb_ary_push(), rb_assoc_new(), rb_last_status_get(), rb_last_status_set(), and ST_DELETE.

Referenced by proc_waitall().

## Variable Documentation

const rb_data_type_t exec_arg_data_type
| static

Initial value:
= {
"exec_arg",
{mark_exec_arg, free_exec_arg, memsize_exec_arg},
}
mark_exec_arg
static void mark_exec_arg(void *ptr)
Definition: process.c:1318
memsize_exec_arg
static size_t memsize_exec_arg(const void *ptr)
Definition: process.c:1349
free_exec_arg
static void free_exec_arg(void *ptr)
Definition: process.c:1343

Definition at line 1354 of file process.c.

Referenced by rb_execarg_get(), and rb_execarg_new().

int forked_child = 0
| static

Definition at line 1039 of file process.c.

Referenced by after_exec_non_async_signal_safe(), and before_exec_non_async_signal_safe().

st_table* pid_tbl
| static

Definition at line 655 of file process.c.

VALUE rb_cProcessStatus
| static

Definition at line 267 of file process.c.

Referenced by Init_process(), and rb_last_status_set().

VALUE rb_mProcess

Definition at line 6557 of file process.c.

VALUE rb_mProcGID

Definition at line 6559 of file process.c.

VALUE rb_mProcID_Syscall

Definition at line 6560 of file process.c.

VALUE rb_mProcUID

Definition at line 6558 of file process.c.

rb_gid_t SAVED_GROUP_ID = -1
| static

Definition at line 5712 of file process.c.

rb_uid_t SAVED_USER_ID = -1
| static

Definition at line 5013 of file process.c.

int under_gid_switch = 0
| static

Definition at line 4707 of file process.c.

int under_uid_switch = 0
| static

Definition at line 4697 of file process.c.