org.apache.tomcat.jni

Class Proc

public class Proc extends Object

Proc

Version: $Revision: 467222 $, $Date: 2006-10-24 05:17:11 +0200 (Tue, 24 Oct 2006) $

Author: Mladen Turk

Field Summary
static intAPR_CHILD_BLOCK
static intAPR_FULL_BLOCK
static intAPR_FULL_NONBLOCK
static intAPR_JUST_WAIT
wait forever for the process to complete
static intAPR_KILL_AFTER_TIMEOUT
SIGTERM, wait 3 seconds, SIGKILL
static intAPR_KILL_ALWAYS
process is sent SIGKILL on apr_pool_t cleanup
static intAPR_KILL_NEVER
process is never sent any signals
static intAPR_KILL_ONLY_ONCE
send SIGTERM and then wait
static intAPR_LIMIT_CPU
static intAPR_LIMIT_MEM
static intAPR_LIMIT_NOFILE
static intAPR_LIMIT_NPROC
static intAPR_NOWAIT
wait for the specified process to finish
static intAPR_NO_PIPE
process exited and dumped a core file
static intAPR_OC_REASON_DEATH
child has died, caller must call unregister still
static intAPR_OC_REASON_LOST
somehow the child exited without us knowing ... buggy os?
static intAPR_OC_REASON_RESTART
a restart is occuring, perform any necessary cleanup (including sending a special signal to child)
static intAPR_OC_REASON_RUNNING
a health check is occuring, for most maintainence functions this is a no-op.
static intAPR_OC_REASON_UNREGISTER
unregister has been called, do whatever is necessary (including kill the child)
static intAPR_OC_REASON_UNWRITABLE
write_fd is unwritable
static intAPR_PARENT_BLOCK
static intAPR_PROC_DETACH_DAEMONIZE
Do not detach
static intAPR_PROC_DETACH_FOREGROUND
static intAPR_PROC_EXIT
do not wait -- just see if it has finished
static intAPR_PROC_SIGNAL
process exited normally
static intAPR_PROC_SIGNAL_CORE
process exited due to a signal
static intAPR_PROGRAM
use the shell to invoke the program
static intAPR_PROGRAM_ENV
invoke the program directly, no copied env
static intAPR_PROGRAM_PATH
invoke the program, replicating our environment
static intAPR_SHELLCM
static intAPR_SHELLCMD_ENV
find program on PATH, use our environment
static intAPR_WAIT
use the shell to invoke the program, replicating our environment
static intMAX_ARGS_SIZE
Detach
static intMAX_ENV_SIZE
Method Summary
static longalloc(long cont)
Allocate apr_proc_t stucture from pool This is not an apr function.
static intcreate(long proc, String progname, String[] args, String[] env, long attr, long pool)
Create a new process and execute a new program within that process.
static intdetach(int daemonize)
Detach the process from the controlling terminal.
static intfork(long[] proc, long cont)
This is currently the only non-portable call in APR.
static intkill(long proc, int sig)
Terminate a process.
static intwait(long proc, int[] exit, int waithow)
Wait for a child process to die
static intwaitAllProcs(long proc, int[] exit, int waithow, long pool)
Wait for any current child process to die and return information about that child.

Field Detail

APR_CHILD_BLOCK

public static final int APR_CHILD_BLOCK

APR_FULL_BLOCK

public static final int APR_FULL_BLOCK

APR_FULL_NONBLOCK

public static final int APR_FULL_NONBLOCK

APR_JUST_WAIT

public static final int APR_JUST_WAIT
wait forever for the process to complete

APR_KILL_AFTER_TIMEOUT

public static final int APR_KILL_AFTER_TIMEOUT
SIGTERM, wait 3 seconds, SIGKILL

APR_KILL_ALWAYS

public static final int APR_KILL_ALWAYS
process is sent SIGKILL on apr_pool_t cleanup

APR_KILL_NEVER

public static final int APR_KILL_NEVER
process is never sent any signals

APR_KILL_ONLY_ONCE

public static final int APR_KILL_ONLY_ONCE
send SIGTERM and then wait

APR_LIMIT_CPU

public static final int APR_LIMIT_CPU

APR_LIMIT_MEM

public static final int APR_LIMIT_MEM

APR_LIMIT_NOFILE

public static final int APR_LIMIT_NOFILE

APR_LIMIT_NPROC

public static final int APR_LIMIT_NPROC

APR_NOWAIT

public static final int APR_NOWAIT
wait for the specified process to finish

APR_NO_PIPE

public static final int APR_NO_PIPE
process exited and dumped a core file

APR_OC_REASON_DEATH

public static final int APR_OC_REASON_DEATH
child has died, caller must call unregister still

APR_OC_REASON_LOST

public static final int APR_OC_REASON_LOST
somehow the child exited without us knowing ... buggy os?

APR_OC_REASON_RESTART

public static final int APR_OC_REASON_RESTART
a restart is occuring, perform any necessary cleanup (including sending a special signal to child)

APR_OC_REASON_RUNNING

public static final int APR_OC_REASON_RUNNING
a health check is occuring, for most maintainence functions this is a no-op.

APR_OC_REASON_UNREGISTER

public static final int APR_OC_REASON_UNREGISTER
unregister has been called, do whatever is necessary (including kill the child)

APR_OC_REASON_UNWRITABLE

public static final int APR_OC_REASON_UNWRITABLE
write_fd is unwritable

APR_PARENT_BLOCK

public static final int APR_PARENT_BLOCK

APR_PROC_DETACH_DAEMONIZE

public static final int APR_PROC_DETACH_DAEMONIZE
Do not detach

APR_PROC_DETACH_FOREGROUND

public static final int APR_PROC_DETACH_FOREGROUND

APR_PROC_EXIT

public static final int APR_PROC_EXIT
do not wait -- just see if it has finished

APR_PROC_SIGNAL

public static final int APR_PROC_SIGNAL
process exited normally

APR_PROC_SIGNAL_CORE

public static final int APR_PROC_SIGNAL_CORE
process exited due to a signal

APR_PROGRAM

public static final int APR_PROGRAM
use the shell to invoke the program

APR_PROGRAM_ENV

public static final int APR_PROGRAM_ENV
invoke the program directly, no copied env

APR_PROGRAM_PATH

public static final int APR_PROGRAM_PATH
invoke the program, replicating our environment

APR_SHELLCM

public static final int APR_SHELLCM

APR_SHELLCMD_ENV

public static final int APR_SHELLCMD_ENV
find program on PATH, use our environment

APR_WAIT

public static final int APR_WAIT
use the shell to invoke the program, replicating our environment

MAX_ARGS_SIZE

public static final int MAX_ARGS_SIZE
Detach

MAX_ENV_SIZE

public static final int MAX_ENV_SIZE

Method Detail

alloc

public static long alloc(long cont)
Allocate apr_proc_t stucture from pool This is not an apr function.

Parameters: cont The pool to use.

create

public static int create(long proc, String progname, String[] args, String[] env, long attr, long pool)
Create a new process and execute a new program within that process. This function returns without waiting for the new process to terminate; use apr_proc_wait for that.

Parameters: progname The program to run args The arguments to pass to the new program. The first one should be the program name. env The new environment table for the new process. This should be a list of NULL-terminated strings. This argument is ignored for APR_PROGRAM_ENV, APR_PROGRAM_PATH, and APR_SHELLCMD_ENV types of commands. attr The procattr we should use to determine how to create the new process pool The pool to use.

Returns: The resulting process handle.

detach

public static int detach(int daemonize)
Detach the process from the controlling terminal.

Parameters: daemonize set to non-zero if the process should daemonize and become a background process, else it will stay in the foreground.

fork

public static int fork(long[] proc, long cont)
This is currently the only non-portable call in APR. This executes a standard unix fork.

Parameters: proc The resulting process handle. cont The pool to use.

Returns: APR_INCHILD for the child, and APR_INPARENT for the parent or an error.

kill

public static int kill(long proc, int sig)
Terminate a process.

Parameters: proc The process to terminate. sig How to kill the process.

wait

public static int wait(long proc, int[] exit, int waithow)
Wait for a child process to die

Parameters: proc The process handle that corresponds to the desired child process exit exit[0] The returned exit status of the child, if a child process dies, or the signal that caused the child to die. On platforms that don't support obtaining this information, the status parameter will be returned as APR_ENOTIMPL. exit[1] Why the child died, the bitwise or of:

 APR_PROC_EXIT         -- process terminated normally
 APR_PROC_SIGNAL       -- process was killed by a signal
 APR_PROC_SIGNAL_CORE  -- process was killed by a signal, and
                          generated a core dump.
 
waithow How should we wait. One of:
 APR_WAIT   -- block until the child process dies.
 APR_NOWAIT -- return immediately regardless of if the
               child is dead or not.
 

Returns: The childs status is in the return code to this process. It is one of:

 APR_CHILD_DONE     -- child is no longer running.
 APR_CHILD_NOTDONE  -- child is still running.
 

waitAllProcs

public static int waitAllProcs(long proc, int[] exit, int waithow, long pool)
Wait for any current child process to die and return information about that child.

Parameters: proc Pointer to NULL on entry, will be filled out with child's information exit exit[0] The returned exit status of the child, if a child process dies, or the signal that caused the child to die. On platforms that don't support obtaining this information, the status parameter will be returned as APR_ENOTIMPL. exit[1] Why the child died, the bitwise or of:

 APR_PROC_EXIT         -- process terminated normally
 APR_PROC_SIGNAL       -- process was killed by a signal
 APR_PROC_SIGNAL_CORE  -- process was killed by a signal, and
                          generated a core dump.
 
waithow How should we wait. One of:
 APR_WAIT   -- block until the child process dies.
 APR_NOWAIT -- return immediately regardless of if the
               child is dead or not.
 
pool Pool to allocate child information out of.

Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.