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"

Go to the source code of this file.

Data Structures

struct  wait_data
struct  string_part
struct  run_exec_dup2_fd_pair
struct  timetick

Defines

#define EXIT_SUCCESS   0
#define EXIT_FAILURE   1
#define MAXPATHLEN   1024
#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
#define FINISH_GETPWNAM
#define OBJ2UID(id)   NUM2UIDT(id)
#define p_uid_from_name   rb_f_notimplement
#define PREPARE_GETGRNAM
#define FINISH_GETGRNAM
#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 EXPORT_STR(str)   (str)
#define EXPORT_DUP(str)   rb_str_dup(str)
#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
#define TIMETICK_INT_MIN   LONG_MIN
#define TIMETICK_INT_MAX   LONG_MAX
#define TIMETICK_INT2NUM(v)   LONG2NUM(v)
#define NDIV(x, y)   (-(-((x)+1)/(y))-1)
#define DIV(n, d)   ((n)<0 ? NDIV((n),(d)) : (n)/(d))
#define RUBY_GETTIMEOFDAY_BASED_CLOCK_REALTIME   ID2SYM(rb_intern("GETTIMEOFDAY_BASED_CLOCK_REALTIME"))
#define RUBY_TIME_BASED_CLOCK_REALTIME   ID2SYM(rb_intern("TIME_BASED_CLOCK_REALTIME"))
#define RUBY_CLOCK_BASED_CLOCK_PROCESS_CPUTIME_ID   ID2SYM(rb_intern("CLOCK_BASED_CLOCK_PROCESS_CPUTIME_ID"))
#define rb_intern(str)   rb_intern_const(str)

Typedefs

typedef unsigned int unsigned_clock_t
typedef long timetick_int_t

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)
rb_execargrb_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 (RB_BLOCK_CALL_FUNC_ARGLIST(i, ary))
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)
static timetick_int_t gcd_timetick_int (timetick_int_t a, timetick_int_t b)
static void reduce_fraction (timetick_int_t *np, timetick_int_t *dp)
static void reduce_factors (timetick_int_t *numerators, int num_numerators, timetick_int_t *denominators, int num_denominators)
static VALUE timetick2dblnum (struct timetick *ttp, timetick_int_t *numerators, int num_numerators, timetick_int_t *denominators, int num_denominators)
static VALUE timetick2dblnum_reciprocal (struct timetick *ttp, timetick_int_t *numerators, int num_numerators, timetick_int_t *denominators, int num_denominators)
static VALUE timetick2integer (struct timetick *ttp, timetick_int_t *numerators, int num_numerators, timetick_int_t *denominators, int num_denominators)
static VALUE make_clock_result (struct timetick *ttp, timetick_int_t *numerators, int num_numerators, timetick_int_t *denominators, int num_denominators, VALUE unit)
VALUE rb_clock_gettime (int argc, VALUE *argv)
VALUE rb_clock_getres (int argc, VALUE *argv)
void Init_process (void)

Variables

static VALUE rb_cProcessStatus
static st_tablepid_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


Define Documentation

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

Definition at line 1166 of file process.c.

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

Referenced by rb_proc_exec_n().

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

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

 
#define before_fork (  )     before_exec()

Definition at line 1165 of file process.c.

#define CHILD_ERRMSG_BUFLEN   80

Referenced by rb_f_exec(), and rb_f_spawn().

#define DIV ( n,
 )     ((n)<0 ? NDIV((n),(d)) : (n)/(d))

Definition at line 6873 of file process.c.

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

Definition at line 2506 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.

#define EXIT_SUCCESS   0

Definition at line 41 of file process.c.

#define EXPORT_DUP ( str   )     rb_str_dup(str)

Definition at line 1426 of file process.c.

Referenced by check_exec_redirect(), and rb_execarg_addopt().

#define EXPORT_STR ( str   )     (str)

Definition at line 1425 of file process.c.

Referenced by check_exec_env_i(), and rb_exec_fillarg().

#define FINISH_GETGRNAM

Definition at line 230 of file process.c.

#define FINISH_GETPWNAM

Definition at line 189 of file process.c.

#define MAXPATHLEN   1024

Definition at line 57 of file process.c.

#define NDIV ( x,
 )     (-(-((x)+1)/(y))-1)

Definition at line 6872 of file process.c.

#define NO_WAITPID

Definition at line 705 of file process.c.

Referenced by proc_waitall().

#define OBJ2GID ( id   )     NUM2GIDT(id)

Definition at line 231 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 190 of file process.c.

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

#define p_gid_from_name   rb_f_notimplement

Definition at line 234 of file process.c.

#define p_gid_from_name   p_gid_from_name

Definition at line 234 of file process.c.

Referenced by Init_process().

#define P_NOWAIT   _P_NOWAIT

Definition at line 1435 of file process.c.

Referenced by check_spawn_mode().

#define p_sys_issetugid   rb_f_notimplement

Definition at line 5546 of file process.c.

Referenced by Init_process().

#define p_sys_setegid   rb_f_notimplement

Definition at line 5459 of file process.c.

Referenced by Init_process().

#define p_sys_seteuid   rb_f_notimplement

Definition at line 5075 of file process.c.

Referenced by Init_process().

#define p_sys_setgid   rb_f_notimplement

Definition at line 5415 of file process.c.

Referenced by Init_process().

#define p_sys_setregid   rb_f_notimplement

Definition at line 5488 of file process.c.

Referenced by Init_process().

#define p_sys_setresgid   rb_f_notimplement

Definition at line 5517 of file process.c.

Referenced by Init_process().

#define p_sys_setresuid   rb_f_notimplement

Definition at line 5134 of file process.c.

Referenced by Init_process().

#define p_sys_setreuid   rb_f_notimplement

Definition at line 5104 of file process.c.

Referenced by Init_process().

#define p_sys_setrgid   rb_f_notimplement

Definition at line 5437 of file process.c.

Referenced by Init_process().

#define p_sys_setruid   rb_f_notimplement

Definition at line 5053 of file process.c.

Referenced by Init_process().

#define p_sys_setuid   rb_f_notimplement

Definition at line 5031 of file process.c.

Referenced by Init_process().

#define p_uid_from_name   rb_f_notimplement

Definition at line 193 of file process.c.

#define p_uid_from_name   p_uid_from_name

Definition at line 193 of file process.c.

Referenced by Init_process().

#define PREPARE_GETGRNAM

Definition at line 229 of file process.c.

#define PREPARE_GETPWNAM

Definition at line 188 of file process.c.

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

Definition at line 146 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 5902 of file process.c.

Referenced by Init_process().

#define proc_getgroups   rb_f_notimplement

Definition at line 5694 of file process.c.

Referenced by Init_process().

#define proc_getmaxgroups   rb_f_notimplement

Definition at line 5794 of file process.c.

Referenced by Init_process().

#define proc_getpgid   rb_f_notimplement

Definition at line 4323 of file process.c.

Referenced by Init_process().

#define proc_getpgrp   rb_f_notimplement

Definition at line 4268 of file process.c.

Referenced by Init_process().

#define proc_getpriority   rb_f_notimplement

Definition at line 4479 of file process.c.

Referenced by Init_process().

#define proc_getrlimit   rb_f_notimplement

Definition at line 4747 of file process.c.

Referenced by Init_process().

#define proc_getsid   rb_f_notimplement

Definition at line 4383 of file process.c.

Referenced by Init_process().

#define proc_initgroups   rb_f_notimplement

Definition at line 5774 of file process.c.

Referenced by Init_process().

#define proc_setegid_m   rb_f_notimplement

Definition at line 6293 of file process.c.

Referenced by Init_process().

#define proc_seteuid_m   rb_f_notimplement

Definition at line 6163 of file process.c.

Referenced by Init_process().

#define proc_setgid   rb_f_notimplement

Definition at line 5604 of file process.c.

Referenced by Init_process().

#define proc_setgroups   rb_f_notimplement

Definition at line 5743 of file process.c.

Referenced by Init_process().

#define proc_setmaxgroups   rb_f_notimplement

Definition at line 5826 of file process.c.

Referenced by Init_process().

#define proc_setpgid   rb_f_notimplement

Definition at line 4349 of file process.c.

Referenced by Init_process().

#define proc_setpgrp   rb_f_notimplement

Definition at line 4297 of file process.c.

Referenced by Init_process().

#define proc_setpriority   rb_f_notimplement

Definition at line 4511 of file process.c.

Referenced by Init_process().

#define proc_setrlimit   rb_f_notimplement

Definition at line 4823 of file process.c.

Referenced by Init_process().

#define proc_setsid   rb_f_notimplement

Definition at line 4442 of file process.c.

Referenced by Init_process().

#define proc_setuid   rb_f_notimplement

Definition at line 5193 of file process.c.

Referenced by Init_process().

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

Definition at line 360 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 3592 of file process.c.

Referenced by Init_process().

#define rb_intern ( str   )     rb_intern_const(str)

#define rb_proc_times   rb_f_notimplement

Definition at line 6764 of file process.c.

Referenced by Init_process().

#define redirect_close ( fd   )     close(fd)

Definition at line 2573 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 2571 of file process.c.

Referenced by run_exec_dup2(), and save_redirect_fd().

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

Definition at line 2572 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 2574 of file process.c.

Referenced by run_exec_open().

#define RUBY_CLOCK_BASED_CLOCK_PROCESS_CPUTIME_ID   ID2SYM(rb_intern("CLOCK_BASED_CLOCK_PROCESS_CPUTIME_ID"))

Referenced by rb_clock_getres(), and rb_clock_gettime().

#define RUBY_GETTIMEOFDAY_BASED_CLOCK_REALTIME   ID2SYM(rb_intern("GETTIMEOFDAY_BASED_CLOCK_REALTIME"))

Referenced by Init_process(), rb_clock_getres(), and rb_clock_gettime().

#define RUBY_TIME_BASED_CLOCK_REALTIME   ID2SYM(rb_intern("TIME_BASED_CLOCK_REALTIME"))

Referenced by rb_clock_getres(), and rb_clock_gettime().

#define TIMETICK_INT2NUM (  )     LONG2NUM(v)

Definition at line 6776 of file process.c.

Referenced by timetick2integer().

#define TIMETICK_INT_MAX   LONG_MAX

Definition at line 6775 of file process.c.

Referenced by timetick2integer().

#define TIMETICK_INT_MIN   LONG_MIN

Definition at line 6774 of file process.c.

Referenced by timetick2integer().

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

Definition at line 1196 of file process.c.

Referenced by proc_exec_cmd(), and proc_exec_v().

#define USE_SPAWNV   0

Definition at line 1432 of file process.c.

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

Definition at line 109 of file process.c.

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

Definition at line 100 of file process.c.

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

Definition at line 103 of file process.c.

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

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

Definition at line 106 of file process.c.

#define WSTOPSIG   WEXITSTATUS

Definition at line 115 of file process.c.

Referenced by pst_message(), and pst_wstopsig().

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

Definition at line 112 of file process.c.

Referenced by pst_message(), and pst_wtermsig().


Typedef Documentation

typedef long timetick_int_t

Definition at line 6773 of file process.c.

typedef unsigned int unsigned_clock_t

Definition at line 239 of file process.c.


Function Documentation

static void after_exec ( void   )  [static]

Definition at line 1159 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 1142 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 1150 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 1134 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 1105 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 1119 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 1971 of file process.c.

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

Referenced by rb_check_exec_env().

static VALUE check_exec_fds ( struct rb_execarg eargp  )  [static]

Definition at line 1903 of file process.c.

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

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 1873 of file process.c.

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

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 1843 of file process.c.

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

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 1858 of file process.c.

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

Referenced by rb_execarg_extract_options().

static void check_exec_redirect ( VALUE  key,
VALUE  val,
struct rb_execarg eargp 
) [static]

Definition at line 1576 of file process.c.

References check_exec_redirect1(), check_exec_redirect_fd(), EXPORT_DUP, rb_execarg::fd_close, rb_execarg::fd_dup2, rb_execarg::fd_dup2_child, rb_execarg::fd_open, FilePathValue, FIX2INT, FIXNUM_P, hide_obj, id, INT2FIX, INT2NUM, NIL_P, 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_to_int(), RB_TYPE_P, StringValueCStr, SYM2ID, SYMBOL_P, T_ARRAY, T_FILE, T_FIXNUM, T_STRING, T_SYMBOL, TYPE, and VALUE.

Referenced by rb_execarg_addopt().

static VALUE check_exec_redirect1 ( VALUE  ary,
VALUE  key,
VALUE  param 
) [static]

Definition at line 1554 of file process.c.

References check_exec_redirect_fd(), hide_obj, NIL_P, Qfalse, RARRAY_AREF, RARRAY_LEN, rb_ary_new(), rb_ary_push(), rb_assoc_new(), RB_TYPE_P, T_ARRAY, and VALUE.

Referenced by check_exec_redirect().

static VALUE check_exec_redirect_fd ( VALUE  v,
int  iskey 
) [static]

Definition at line 1513 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 VALUE.

Referenced by check_exec_redirect(), and check_exec_redirect1().

static void check_gid_switch ( void   )  [static]

Definition at line 4838 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 4828 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 2074 of file process.c.

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

Referenced by rb_exec_fillarg().

static VALUE detach_process_pid ( VALUE  thread  )  [static]

Definition at line 1009 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 1015 of file process.c.

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

Referenced by rb_detach_process().

static int exit_status_code ( VALUE  status  )  [static]

Definition at line 3596 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 2307 of file process.c.

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

Referenced by rb_execarg_fixup().

static void free_exec_arg ( void *  ptr  )  [static]

Definition at line 1394 of file process.c.

References xfree.

static timetick_int_t gcd_timetick_int ( timetick_int_t  a,
timetick_int_t  b 
) [static]

Definition at line 6780 of file process.c.

Referenced by reduce_fraction().

static VALUE get_pid ( void   )  [static]

Definition at line 257 of file process.c.

References PIDT2NUM, and rb_secure().

Referenced by Init_process().

static VALUE get_ppid ( void   )  [static]

Definition at line 281 of file process.c.

References PIDT2NUM, and rb_secure().

Referenced by Init_process().

static VALUE hide_obj ( VALUE  obj  )  [static]

Definition at line 1506 of file process.c.

References RBASIC_CLEAR_CLASS.

static ID id_pid ( void   )  [inline, static]

Definition at line 1001 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 7405 of file process.c.

References CLASS_OF, CLOCK_MONOTONIC, CLOCK_REALTIME, CLOCKID2NUM, 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_clock_getres(), rb_clock_gettime(), rb_cObject, rb_cProcessStatus, rb_cStruct, 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_under(), rb_undef_method(), RLIM2NUM, RUBY_GETTIMEOFDAY_BASED_CLOCK_REALTIME, and WNOHANG.

static int intcmp ( const void *  a,
const void *  b 
) [static]

Definition at line 2610 of file process.c.

Referenced by run_exec_dup2().

static int intrcmp ( const void *  a,
const void *  b 
) [static]

Definition at line 2616 of file process.c.

Referenced by run_exec_dup2().

static VALUE make_clock_result ( struct timetick ttp,
timetick_int_t numerators,
int  num_numerators,
timetick_int_t denominators,
int  num_denominators,
VALUE  unit 
) [static]

Definition at line 6919 of file process.c.

References ID2SYM, NIL_P, PRIsVALUE, rb_eArgError, rb_intern, rb_raise(), timetick2dblnum(), and timetick2integer().

Referenced by rb_clock_getres(), and rb_clock_gettime().

static void mark_exec_arg ( void *  ptr  )  [static]

Definition at line 1369 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, 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 1400 of file process.c.

static VALUE p_gid_change_privilege ( VALUE  obj,
VALUE  id 
) [static]

Definition at line 5946 of file process.c.

References check_gid_switch(), EPERM, errno, getegid(), geteuid(), getgid(), OBJ2GID, rb_gid_t, rb_notimplement(), rb_sys_fail(), rb_uid_t, setegid(), and setgid().

Referenced by Init_process().

static VALUE p_gid_exchange ( VALUE  obj  )  [static]

Definition at line 6455 of file process.c.

References check_gid_switch(), getegid(), getgid(), GIDT2NUM, rb_gid_t, 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 6430 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 6351 of file process.c.

References OBJ2GID, and rb_setegid_core().

Referenced by Init_process().

static VALUE p_gid_have_saved_id ( void   )  [static]

Definition at line 6609 of file process.c.

References Qfalse, and Qtrue.

Referenced by Init_process().

static VALUE p_gid_sw_ensure ( VALUE  obj  )  [static]

Definition at line 6680 of file process.c.

References p_gid_exchange().

Referenced by p_gid_switch().

static VALUE p_gid_switch ( VALUE  obj  )  [static]

Definition at line 6687 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_gid_t, rb_sys_fail(), and rb_yield().

Referenced by Init_process().

static VALUE p_uid_change_privilege ( VALUE  obj,
VALUE  id 
) [static]

Definition at line 5238 of file process.c.

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

Referenced by Init_process().

static VALUE p_uid_exchange ( VALUE  obj  )  [static]

Definition at line 6393 of file process.c.

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

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

static VALUE p_uid_exchangeable ( void   )  [static]

Definition at line 6368 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 6221 of file process.c.

References OBJ2UID, and rb_seteuid_core().

Referenced by Init_process().

static VALUE p_uid_have_saved_id ( void   )  [static]

Definition at line 6493 of file process.c.

References Qfalse, and Qtrue.

Referenced by Init_process().

static VALUE p_uid_sw_ensure ( VALUE  obj  )  [static]

Definition at line 6565 of file process.c.

References p_uid_exchange().

Referenced by p_uid_switch().

static VALUE p_uid_switch ( VALUE  obj  )  [static]

Definition at line 6572 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_uid_t, rb_yield(), and UIDT2NUM.

Referenced by Init_process().

static VALUE proc_detach ( VALUE  obj,
VALUE  pid 
) [static]

Definition at line 1084 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 1201 of file process.c.

References ALLOC_N, ARGVSTR2ARGV, dln_find_exe_r, errno, execv(), NULL, preserving_errno, rb_notimplement(), RSTRING_PTR, STRCASECMP, 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 1314 of file process.c.

References dln_find_exe_r, errno, execl(), MAXPATHLEN, NULL, rb_notimplement(), rb_w32_uspawn(), RSTRING_PTR, wait_data::status, 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 1266 of file process.c.

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

Referenced by rb_proc_exec_n().

static VALUE proc_getegid ( VALUE  obj  )  [static]

Definition at line 6241 of file process.c.

References getegid(), GIDT2NUM, and rb_gid_t.

Referenced by Init_process().

static VALUE proc_geteuid ( VALUE  obj  )  [static]

Definition at line 6117 of file process.c.

References geteuid(), rb_uid_t, and UIDT2NUM.

Referenced by Init_process().

static VALUE proc_getgid ( VALUE  obj  )  [static]

Definition at line 5562 of file process.c.

References getgid(), GIDT2NUM, and rb_gid_t.

Referenced by Init_process().

static VALUE proc_getuid ( VALUE  obj  )  [static]

Definition at line 5150 of file process.c.

References getuid(), rb_uid_t, and UIDT2NUM.

Referenced by Init_process().

static VALUE proc_wait ( int  argc,
VALUE *  argv 
) [static]

Definition at line 885 of file process.c.

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

Referenced by Init_process(), and proc_wait2().

static VALUE proc_wait2 ( int  argc,
VALUE *  argv 
) [static]

Definition at line 930 of file process.c.

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

Referenced by Init_process().

static VALUE proc_waitall ( void   )  [static]

Definition at line 959 of file process.c.

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

Referenced by Init_process().

static VALUE pst_bitand ( VALUE  st1,
VALUE  st2 
) [static]

Definition at line 502 of file process.c.

References INT2NUM, NUM2INT, and PST2INT.

Referenced by Init_process().

static VALUE pst_equal ( VALUE  st1,
VALUE  st2 
) [static]

Definition at line 482 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 453 of file process.c.

References CLASS_OF, NIL_P, NUM2PIDT, PST2INT, pst_message(), pst_pid(), rb_class2name(), rb_pid_t, rb_sprintf(), rb_str_cat2(), and VALUE.

Referenced by Init_process().

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

Definition at line 380 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 374 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 523 of file process.c.

References INT2NUM, NUM2INT, and PST2INT.

Referenced by Init_process().

static VALUE pst_success_p ( VALUE  st  )  [static]

Definition at line 671 of file process.c.

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

Referenced by Init_process().

static VALUE pst_to_i ( VALUE  st  )  [static]

Definition at line 355 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 426 of file process.c.

References NUM2PIDT, PST2INT, pst_message(), pst_pid(), rb_pid_t, rb_str_buf_new(), and VALUE.

Referenced by Init_process().

static VALUE pst_wcoredump ( VALUE  st  )  [static]

Definition at line 690 of file process.c.

References PST2INT, Qfalse, and Qtrue.

Referenced by Init_process().

static VALUE pst_wexitstatus ( VALUE  st  )  [static]

Definition at line 652 of file process.c.

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

Referenced by Init_process().

static VALUE pst_wifexited ( VALUE  st  )  [static]

Definition at line 621 of file process.c.

References PST2INT, Qfalse, Qtrue, and WIFEXITED.

Referenced by Init_process().

static VALUE pst_wifsignaled ( VALUE  st  )  [static]

Definition at line 580 of file process.c.

References PST2INT, Qfalse, Qtrue, and WIFSIGNALED.

Referenced by Init_process().

static VALUE pst_wifstopped ( VALUE  st  )  [static]

Definition at line 541 of file process.c.

References PST2INT, Qfalse, Qtrue, and WIFSTOPPED.

Referenced by Init_process().

static VALUE pst_wstopsig ( VALUE  st  )  [static]

Definition at line 561 of file process.c.

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

Referenced by Init_process().

static VALUE pst_wtermsig ( VALUE  st  )  [static]

Definition at line 601 of file process.c.

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

Referenced by Init_process().

static VALUE rb_check_argv ( int  argc,
VALUE *  argv 
) [static]

Definition at line 2005 of file process.c.

References name, NIL_P, RARRAY_AREF, RARRAY_LEN, rb_check_arity, rb_check_array_type(), rb_eArgError, rb_raise(), rb_str_new_frozen(), RSTRING_PTR, SafeStringValue, security(), StringValueCStr, UNLIMITED_ARGUMENTS, and VALUE.

Referenced by rb_exec_getargs().

static VALUE rb_check_exec_env ( VALUE  hash  )  [static]

Definition at line 1994 of file process.c.

References check_exec_env_i(), env, hide_obj, rb_ary_new(), rb_hash_tbl_raw(), st_data_t, st_foreach(), and VALUE.

Referenced by rb_exec_fillarg(), and rb_execarg_setenv().

static void rb_check_exec_options ( VALUE  opthash,
VALUE  execarg_obj 
) [static]

Definition at line 1951 of file process.c.

References check_exec_options_i(), rb_hash_tbl_raw(), RHASH_EMPTY_P, st_data_t, and st_foreach().

Referenced by rb_exec_fillarg().

VALUE rb_clock_getres ( int  argc,
VALUE *  argv 
)

Definition at line 7288 of file process.c.

References clock_getres(), timetick::count, errno, timetick::giga_count, ID2SYM, make_clock_result(), NUM2CLOCKID, rb_intern, rb_scan_args(), rb_sys_fail(), RUBY_CLOCK_BASED_CLOCK_PROCESS_CPUTIME_ID, RUBY_GETTIMEOFDAY_BASED_CLOCK_REALTIME, RUBY_TIME_BASED_CLOCK_REALTIME, SYMBOL_P, timetick2dblnum_reciprocal(), timespec::tv_nsec, and timespec::tv_sec.

Referenced by Init_process().

VALUE rb_clock_gettime ( int  argc,
VALUE *  argv 
)

Definition at line 7092 of file process.c.

References buf, clock_gettime(), timetick::count, errno, getrusage(), gettimeofday(), timetick::giga_count, make_clock_result(), NULL, NUM2CLOCKID, rb_scan_args(), rb_sys_fail(), RUBY_CLOCK_BASED_CLOCK_PROCESS_CPUTIME_ID, RUBY_GETTIMEOFDAY_BASED_CLOCK_REALTIME, RUBY_TIME_BASED_CLOCK_REALTIME, SYMBOL_P, timespec::tv_nsec, timespec::tv_sec, timeval::tv_sec, timeval::tv_usec, uint64_t, and utime().

Referenced by Init_process().

VALUE rb_detach_process ( rb_pid_t  pid  ) 

Definition at line 1027 of file process.c.

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

Referenced by proc_detach(), and pty_detach_process().

int rb_exec ( const struct rb_exec_arg e  ) 

Definition at line 3153 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(), and RSTRING_PTR.

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

Definition at line 1837 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 2401 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 2293 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 3104 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 3147 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 2084 of file process.c.

References rb_execarg::cmd, compare_posix_sh(), rb_execarg::env_modification, EXPORT_STR, if(), rb_execarg::invoke, string_part::len, MAXPATHLEN, MEMZERO, NIL_P, numberof, string_part::ptr, rb_check_exec_env(), rb_check_exec_options(), rb_execarg_get(), RSTRING_PTR, rb_execarg::sh, strchr(), 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 2036 of file process.c.

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

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 3137 of file process.c.

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

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 1670 of file process.c.

References 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, EXPORT_DUP, 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, 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_pid_t, rb_raise(), rb_secure(), rb_to_int(), rb_execarg::rlimit_limits, RTEST, ST_CONTINUE, ST_STOP, SYM2ID, T_ARRAY, T_FILE, T_FIXNUM, T_SYMBOL, TYPE, rb_execarg::uid, rb_execarg::uid_given, rb_execarg::umask_given, rb_execarg::umask_mask, rb_execarg::unsetenv_others_do, rb_execarg::unsetenv_others_given, and VALUE.

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 1959 of file process.c.

References args, check_exec_options_i_extract(), Qnil, rb_hash_tbl_raw(), RHASH_EMPTY_P, st_data_t, st_foreach(), and VALUE.

Referenced by rb_io_s_popen().

void rb_execarg_fixup ( VALUE  execarg_obj  ) 

Definition at line 2325 of file process.c.

References 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, key, len, NIL_P, NULL, Qfalse, Qundef, RARRAY_AREF, RARRAY_LEN, rb_cObject, rb_const_get(), rb_convert_type(), rb_execarg_get(), RB_GC_GUARD, rb_hash_new(), rb_intern, RB_OBJ_WRITTEN, rb_str_buf_cat(), rb_str_buf_new(), rb_str_new(), rb_str_set_len(), rb_execarg::redirect_fds, RHASH_SIZE, RHASH_TBL_RAW, RSTRING_LEN, RSTRING_PTR, run_exec_dup2_tmpbuf_size(), st_data_t, st_delete(), st_foreach(), st_insert(), strlen(), T_HASH, tmpbuf, rb_execarg::unsetenv_others_do, rb_execarg::unsetenv_others_given, val, and VALUE.

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 2272 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 2280 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, rb_execarg::sh, rb_execarg::use_shell, and VALUE.

Referenced by rb_exec_arg_init(), and rb_execarg_new().

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

Definition at line 2261 of file process.c.

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

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 2957 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, key, len, MEMZERO, mode_t, my_getcwd, NIL_P, rb_execarg::pgroup_given, Qfalse, Qnil, RARRAY_AREF, RARRAY_LEN, 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, VALUE, 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 2299 of file process.c.

References 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 3647 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 3732 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_stderr, ruby_error_print(), StringValue, and UNREACHABLE.

Referenced by Init_process().

VALUE rb_f_exec ( int  argc,
VALUE *  argv 
)

Definition at line 2482 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, rb_execarg::use_shell, and VALUE.

Referenced by Init_process().

VALUE rb_f_exit ( int  argc,
VALUE *  argv 
)

Definition at line 3703 of file process.c.

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

Referenced by Init_process().

static VALUE rb_f_exit_bang ( int  argc,
VALUE *  argv,
VALUE  obj 
) [static]

Definition at line 3630 of file process.c.

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

Referenced by Init_process().

static VALUE rb_f_sleep ( int  argc,
VALUE *  argv 
) [static]

Definition at line 4220 of file process.c.

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

Referenced by Init_process().

static VALUE rb_f_spawn ( int  argc,
VALUE *  argv 
) [static]

Definition at line 4173 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_pid_t, 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 3872 of file process.c.

References EXIT_SUCCESS, NULL, PST2INT, Qfalse, Qnil, Qtrue, rb_last_status_clear(), rb_last_status_get(), rb_pid_t, rb_spawn_internal(), rb_sys_fail(), rb_waitpid(), RETSIGTYPE, and signal().

Referenced by Init_process().

void rb_last_status_clear ( void   ) 

Definition at line 336 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 321 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 327 of file process.c.

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

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

int rb_proc_exec ( const char *  str  ) 

Definition at line 1359 of file process.c.

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

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

Definition at line 1285 of file process.c.

References ALLOC_ARGV, ALLOCV_END, args, proc_exec_v(), RSTRING_PTR, and VALUE.

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

Definition at line 3097 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 3091 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 6297 of file process.c.

References check_gid_switch(), geteuid(), getgid(), rb_gid_t, 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 6167 of file process.c.

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

Referenced by p_uid_grant_privilege().

rb_pid_t rb_spawn ( int  argc,
VALUE *  argv 
)

Definition at line 3833 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 3827 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 3812 of file process.c.

References rb_execarg_fixup(), rb_execarg_get(), rb_execarg_new(), RB_GC_GUARD, rb_pid_t, rb_spawn_process(), 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 3762 of file process.c.

References 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_pid_t, rb_str_new2, rb_execarg::redirect_fds, RSTRING_PTR, rb_execarg::sh, 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 3754 of file process.c.

References rb_waitpid().

Referenced by rb_io_close().

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

Definition at line 758 of file process.c.

References errno, GET_THREAD(), wait_data::pid, pid_tbl, rb_eArgError, rb_last_status_set(), rb_pid_t, rb_raise(), rb_thread_alone(), rb_thread_blocking_region(), rb_thread_call_without_gvl(), rb_thread_schedule(), rb_waitpid_blocking(), result, RUBY_UBF_PROCESS, RUBY_VM_CHECK_INTS, st_data_t, st_delete(), st_foreach(), st_init_numtable(), st_insert(), wait_data::status, VALUE, 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 739 of file process.c.

References NULL, rb_pid_t, result, VALUE, wait(), and waitpid().

Referenced by rb_waitpid().

static void reduce_factors ( timetick_int_t numerators,
int  num_numerators,
timetick_int_t denominators,
int  num_denominators 
) [static]

Definition at line 6810 of file process.c.

References reduce_fraction().

Referenced by timetick2dblnum(), timetick2dblnum_reciprocal(), and timetick2integer().

static void reduce_fraction ( timetick_int_t np,
timetick_int_t dp 
) [static]

Definition at line 6800 of file process.c.

References gcd_timetick_int().

Referenced by reduce_factors().

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

Definition at line 2768 of file process.c.

References ERRMSG, FIX2INT, RARRAY_AREF, RARRAY_LEN, redirect_close, and VALUE.

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 2636 of file process.c.

References ERRMSG, fail, fcntl(), FIX2INT, intcmp(), intrcmp(), key, 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_AREF, RARRAY_LEN, rb_update_max_fd(), redirect_close, redirect_dup, redirect_dup2, RSTRING_PTR, save_redirect_fd(), and VALUE.

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 2837 of file process.c.

References ERRMSG, FIX2INT, run_exec_dup2_fd_pair::newfd, run_exec_dup2_fd_pair::oldfd, RARRAY_AREF, RARRAY_LEN, rb_update_max_fd(), redirect_dup2, save_redirect_fd(), and VALUE.

Referenced by rb_execarg_run_options().

static long run_exec_dup2_tmpbuf_size ( long  n  )  [static]

Definition at line 2629 of file process.c.

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 2787 of file process.c.

References ERRMSG, FIX2INT, NUM2INT, RARRAY_AREF, RARRAY_LEN, rb_update_max_fd(), redirect_close, redirect_dup2, redirect_open, RSTRING_PTR, save_redirect_fd(), and VALUE.

Referenced by rb_execarg_run_options().

static void save_env ( struct rb_execarg sargp  )  [static]

Definition at line 2937 of file process.c.

References 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, rb_execarg::unsetenv_others_given, and VALUE.

Referenced by rb_execarg_run_options().

static VALUE save_env_i ( RB_BLOCK_CALL_FUNC_ARGLIST(i, ary)   )  [static]

Definition at line 2930 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 2578 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(), redirect_dup, and VALUE.

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

static void security ( const char *  str  )  [static]

Definition at line 1171 of file process.c.

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

Referenced by rb_check_argv().

static VALUE timetick2dblnum ( struct timetick ttp,
timetick_int_t numerators,
int  num_numerators,
timetick_int_t denominators,
int  num_denominators 
) [static]

Definition at line 6831 of file process.c.

References timetick::count, DBL2NUM, timetick::giga_count, and reduce_factors().

Referenced by make_clock_result().

static VALUE timetick2dblnum_reciprocal ( struct timetick ttp,
timetick_int_t numerators,
int  num_numerators,
timetick_int_t denominators,
int  num_denominators 
) [static]

Definition at line 6852 of file process.c.

References timetick::count, DBL2NUM, timetick::giga_count, and reduce_factors().

Referenced by rb_clock_getres().

static VALUE timetick2integer ( struct timetick ttp,
timetick_int_t numerators,
int  num_numerators,
timetick_int_t denominators,
int  num_denominators 
) [static]

Definition at line 6876 of file process.c.

References timetick::count, DIV, timetick::giga_count, LONG2FIX, MUL_OVERFLOW_SIGNED_INTEGER_P, rb_funcall(), reduce_factors(), TIMETICK_INT2NUM, TIMETICK_INT_MAX, and TIMETICK_INT_MIN.

Referenced by make_clock_result().

static int wait_each ( rb_pid_t  pid,
int  status,
struct wait_data data 
) [static]

Definition at line 714 of file process.c.

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

Referenced by rb_waitpid().

static int waitall_each ( rb_pid_t  pid,
int  status,
VALUE  ary 
) [static]

Definition at line 724 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:

Definition at line 1405 of file process.c.

Referenced by rb_execarg_get(), and rb_execarg_new().

int forked_child = 0 [static]

Definition at line 1090 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 706 of file process.c.

Referenced by proc_waitall(), and rb_waitpid().

VALUE rb_cProcessStatus [static]

Definition at line 318 of file process.c.

Referenced by Init_process(), and rb_last_status_set().

VALUE rb_mProcess

Definition at line 7393 of file process.c.

VALUE rb_mProcGID

Definition at line 7395 of file process.c.

VALUE rb_mProcID_Syscall

Definition at line 7396 of file process.c.

VALUE rb_mProcUID

Definition at line 7394 of file process.c.

rb_gid_t SAVED_GROUP_ID = -1 [static]

Definition at line 5915 of file process.c.

rb_uid_t SAVED_USER_ID = -1 [static]

Definition at line 5207 of file process.c.

int under_gid_switch = 0 [static]

Definition at line 4836 of file process.c.

int under_uid_switch = 0 [static]

Definition at line 4826 of file process.c.


Generated on 19 Jul 2016 for Ruby by  doxygen 1.4.7