亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? apr_thread_proc.h

?? Apache_2.0.59-Openssl_0.9 配置tomcat. Apache_2.0.59-Openssl_0.9 配置tomcat.
?? H
?? 第 1 頁 / 共 3 頁
字號:
/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as
 * applicable.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef APR_THREAD_PROC_H
#define APR_THREAD_PROC_H

/**
 * @file apr_thread_proc.h
 * @brief APR Thread and Process Library
 */

#include "apr.h"
#include "apr_file_io.h"
#include "apr_pools.h"
#include "apr_errno.h"

#if APR_HAVE_STRUCT_RLIMIT
#include <sys/time.h>
#include <sys/resource.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/**
 * @defgroup apr_thread_proc Threads and Process Functions
 * @ingroup APR 
 * @{
 */

typedef enum {
    APR_SHELLCMD,       /**< use the shell to invoke the program */
    APR_PROGRAM,        /**< invoke the program directly, no copied env */
    APR_PROGRAM_ENV,    /**< invoke the program, replicating our environment */
    APR_PROGRAM_PATH,   /**< find program on PATH, use our environment */
    APR_SHELLCMD_ENV    /**< use the shell to invoke the program,
                          *   replicating our environment
                          */
} apr_cmdtype_e;

typedef enum {
    APR_WAIT,           /**< wait for the specified process to finish */
    APR_NOWAIT          /**< do not wait -- just see if it has finished */
} apr_wait_how_e;

/* I am specifically calling out the values so that the macros below make
 * more sense.  Yes, I know I don't need to, but I am hoping this makes what
 * I am doing more clear.  If you want to add more reasons to exit, continue
 * to use bitmasks.
 */
typedef enum {
    APR_PROC_EXIT = 1,          /**< process exited normally */
    APR_PROC_SIGNAL = 2,        /**< process exited due to a signal */
    APR_PROC_SIGNAL_CORE = 4    /**< process exited and dumped a core file */
} apr_exit_why_e;

/** did we exit the process */
#define APR_PROC_CHECK_EXIT(x)        (x & APR_PROC_EXIT)
/** did we get a signal */
#define APR_PROC_CHECK_SIGNALED(x)    (x & APR_PROC_SIGNAL)
/** did we get core */
#define APR_PROC_CHECK_CORE_DUMP(x)   (x & APR_PROC_SIGNAL_CORE)

/** @see apr_procattr_io_set */
#define APR_NO_PIPE          0

/** @see apr_procattr_io_set */
#define APR_FULL_BLOCK       1
/** @see apr_procattr_io_set */
#define APR_FULL_NONBLOCK    2
/** @see apr_procattr_io_set */
#define APR_PARENT_BLOCK     3
/** @see apr_procattr_io_set */
#define APR_CHILD_BLOCK      4

/** @see apr_procattr_limit_set */
#define APR_LIMIT_CPU        0
/** @see apr_procattr_limit_set */
#define APR_LIMIT_MEM        1
/** @see apr_procattr_limit_set */
#define APR_LIMIT_NPROC      2
/** @see apr_procattr_limit_set */
#define APR_LIMIT_NOFILE     3

/**
 * @defgroup APR_OC Other Child Flags
 * @{
 */
#define APR_OC_REASON_DEATH         0     /**< child has died, caller must call
                                           * unregister still */
#define APR_OC_REASON_UNWRITABLE    1     /**< write_fd is unwritable */
#define APR_OC_REASON_RESTART       2     /**< a restart is occuring, perform
                                           * any necessary cleanup (including
                                           * sending a special signal to child)
                                           */
#define APR_OC_REASON_UNREGISTER    3     /**< unregister has been called, do
                                           * whatever is necessary (including
                                           * kill the child) */
#define APR_OC_REASON_LOST          4     /**< somehow the child exited without
                                           * us knowing ... buggy os? */
#define APR_OC_REASON_RUNNING       5     /**< a health check is occuring, 
                                           * for most maintainence functions
                                           * this is a no-op.
                                           */
/** @} */

/** The APR process type */
typedef struct apr_proc_t {
    /** The process ID */
    pid_t pid;
    /** Parent's side of pipe to child's stdin */
    apr_file_t *in;
    /** Parent's side of pipe to child's stdout */
    apr_file_t *out;
    /** Parent's side of pipe to child's stdouterr */
    apr_file_t *err;
#if APR_HAS_PROC_INVOKED || defined(DOXYGEN)
    /** Diagnositics/debugging string of the command invoked for 
     *  this process [only present if APR_HAS_PROC_INVOKED is true]
     * @remark Only enabled on Win32 by default.
     * @bug This should either always or never be present in release
     * builds - since it breaks binary compatibility.  We may enable
     * it always in APR 1.0 yet leave it undefined in most cases.
     */
    char *invoked;
#endif
#if defined(WIN32) || defined(DOXYGEN)
    /** (Win32 only) Creator's handle granting access to the process
     * @remark This handle is closed and reset to NULL in every case
     * corresponding to a waitpid() on Unix which returns the exit status.
     * Therefore Win32 correspond's to Unix's zombie reaping characteristics
     * and avoids potential handle leaks.
     */
    HANDLE hproc;
#endif
} apr_proc_t;

/**
 * The prototype for APR child errfn functions.  (See the description
 * of apr_procattr_child_errfn_set() for more information.)
 * It is passed the following parameters:
 * @param pool Pool associated with the apr_proc_t.  If your child
 *             error function needs user data, associate it with this
 *             pool.
 * @param err APR error code describing the error
 * @param description Text description of type of processing which failed
 */
typedef void (apr_child_errfn_t)(apr_pool_t *proc, apr_status_t err,
                                 const char *description);

/** Opaque Thread structure. */
typedef struct apr_thread_t           apr_thread_t;

/** Opaque Thread attributes structure. */
typedef struct apr_threadattr_t       apr_threadattr_t;

/** Opaque Process attributes structure. */
typedef struct apr_procattr_t         apr_procattr_t;

/** Opaque control variable for one-time atomic variables.  */
typedef struct apr_thread_once_t      apr_thread_once_t;

/** Opaque thread private address space. */
typedef struct apr_threadkey_t        apr_threadkey_t;

/** Opaque record of child process. */
typedef struct apr_other_child_rec_t  apr_other_child_rec_t;

/**
 * The prototype for any APR thread worker functions.
 */
typedef void *(APR_THREAD_FUNC *apr_thread_start_t)(apr_thread_t*, void*);

typedef enum {
    APR_KILL_NEVER,             /**< process is never sent any signals */
    APR_KILL_ALWAYS,            /**< process is sent SIGKILL on apr_pool_t cleanup */
    APR_KILL_AFTER_TIMEOUT,     /**< SIGTERM, wait 3 seconds, SIGKILL */
    APR_JUST_WAIT,              /**< wait forever for the process to complete */
    APR_KILL_ONLY_ONCE          /**< send SIGTERM and then wait */
} apr_kill_conditions_e;

/* Thread Function definitions */

#if APR_HAS_THREADS

/**
 * Create and initialize a new threadattr variable
 * @param new_attr The newly created threadattr.
 * @param cont The pool to use
 */
APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new_attr, 
                                                apr_pool_t *cont);

/**
 * Set if newly created threads should be created in detached state.
 * @param attr The threadattr to affect 
 * @param on Thread detach state on or off
 */
APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, 
                                                   apr_int32_t on);

/**
 * Get the detach state for this threadattr.
 * @param attr The threadattr to reference 
 */
APR_DECLARE(apr_status_t) apr_threadattr_detach_get(apr_threadattr_t *attr);

/**
 * Set the stack size of newly created threads.
 * @param attr The threadattr to affect 
 * @param stacksize The stack size in bytes
 */
APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr,
                                                       apr_size_t stacksize);

/**
 * Create a new thread of execution
 * @param new_thread The newly created thread handle.
 * @param attr The threadattr to use to determine how to create the thread
 * @param func The function to start the new thread in
 * @param data Any data to be passed to the starting function
 * @param cont The pool to use
 */
APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new_thread, 
                                            apr_threadattr_t *attr, 
                                            apr_thread_start_t func, 
                                            void *data, apr_pool_t *cont);

/**
 * stop the current thread
 * @param thd The thread to stop
 * @param retval The return value to pass back to any thread that cares
 */
APR_DECLARE(apr_status_t) apr_thread_exit(apr_thread_t *thd, 
                                          apr_status_t retval);

/**
 * block until the desired thread stops executing.
 * @param retval The return value from the dead thread.
 * @param thd The thread to join
 */
APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, 
                                          apr_thread_t *thd); 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区x88av| 欧美电视剧在线观看完整版| 欧美一区二区三区四区高清| 国产精品免费免费| 久久99在线观看| 欧美视频自拍偷拍| 亚洲欧美怡红院| 国产激情偷乱视频一区二区三区| 欧美日韩情趣电影| 亚洲欧洲成人精品av97| 国产电影精品久久禁18| 日韩天堂在线观看| 日韩和欧美的一区| 欧美日韩视频在线第一区 | 亚洲日本一区二区三区| 国产精品一级片| 欧美精品一区视频| 久久99久久99精品免视看婷婷 | 亚洲电影在线播放| 成人av网站在线观看免费| 国产欧美精品一区| 国产精品1区2区| 久久久国产精华| 国产九色精品成人porny| 亚洲777理论| 国产专区综合网| 精品免费国产二区三区 | 成人精品国产一区二区4080| 日韩情涩欧美日韩视频| 美女网站色91| 日韩欧美中文字幕精品| 精品一区二区久久| 精品1区2区在线观看| 精品一区二区三区免费视频| 91精品国产高清一区二区三区| 丝袜诱惑制服诱惑色一区在线观看| 在线观看日韩毛片| 亚洲国产毛片aaaaa无费看| 欧美自拍偷拍一区| 亚洲777理论| 精品91自产拍在线观看一区| 久久se这里有精品| 中文av一区二区| 日本电影欧美片| 日韩精品亚洲一区| 精品黑人一区二区三区久久| 国产精品中文字幕日韩精品| 中文字幕一区二区三区不卡在线| 91丨porny丨最新| 午夜欧美视频在线观看| 欧美成人乱码一区二区三区| 粉嫩欧美一区二区三区高清影视| 亚洲视频一区二区在线| 制服视频三区第一页精品| 国内精品久久久久影院一蜜桃| 国产精品美日韩| 欧美色视频在线观看| 国内精品在线播放| 亚洲精品v日韩精品| 日韩一区二区视频在线观看| 国内成+人亚洲+欧美+综合在线| 1024精品合集| 日韩三级av在线播放| 波多野结衣精品在线| 午夜精品视频一区| 国产精品久久毛片a| 欧美日韩一区二区电影| 国产成人av网站| 日本亚洲免费观看| 亚洲美女一区二区三区| 日韩欧美中文一区| 一本一道波多野结衣一区二区| 天堂久久一区二区三区| 欧美经典一区二区| 欧美一区二区在线免费观看| 不卡av电影在线播放| 久久福利资源站| 亚洲香蕉伊在人在线观| 国产精品国产三级国产aⅴ入口 | 中文字幕在线不卡视频| 欧美精品乱码久久久久久按摩 | 国产真实乱子伦精品视频| 亚洲丰满少妇videoshd| 中文字幕一区二区不卡 | 一区二区三区在线视频免费| 精品久久久久久久久久久久包黑料| gogo大胆日本视频一区| 黄色日韩三级电影| 日本不卡在线视频| 亚洲电影在线播放| 亚洲免费观看高清完整版在线观看熊| 久久久久久久久97黄色工厂| 日韩写真欧美这视频| 欧美视频日韩视频| 在线观看欧美日本| 色婷婷综合久久久久中文一区二区 | 日韩欧美国产高清| 欧美日韩国产综合一区二区| 99r国产精品| 成人激情小说乱人伦| 国产精品一区二区不卡| 国产最新精品免费| 国产一区二区免费视频| 捆绑调教美女网站视频一区| 日韩av中文字幕一区二区| 婷婷久久综合九色综合绿巨人| 综合色天天鬼久久鬼色| 亚洲啪啪综合av一区二区三区| 国产精品久久久久aaaa樱花| 国产精品麻豆网站| 亚洲欧美日本在线| 亚洲一区在线电影| 五月婷婷欧美视频| 蜜桃精品视频在线| 黑人巨大精品欧美一区| 国产精品综合一区二区三区| 国内欧美视频一区二区| 国产麻豆午夜三级精品| 国产69精品久久777的优势| 成人一区二区三区在线观看| 成人国产在线观看| 99精品在线免费| 欧美视频中文字幕| 欧美一区二区播放| 久久夜色精品国产欧美乱极品| 久久久国产综合精品女国产盗摄| 国产欧美视频一区二区| **性色生活片久久毛片| 亚洲第一激情av| 麻豆视频一区二区| 成人久久视频在线观看| 欧美在线播放高清精品| 91麻豆精品91久久久久久清纯| 精品国产一区二区亚洲人成毛片 | 成人激情免费电影网址| 91丝袜高跟美女视频| 精品视频999| 日韩欧美精品三级| 国产精品天天看| 天天射综合影视| 国产麻豆精品视频| 色偷偷久久人人79超碰人人澡| 91麻豆精品91久久久久久清纯| 久久婷婷综合激情| 亚洲一线二线三线视频| 国内外成人在线| 在线观看视频一区| 久久久久国产精品麻豆| 亚洲丰满少妇videoshd| 国产成人久久精品77777最新版本| 色欧美88888久久久久久影院| 日韩精品一区二区三区在线| 国产精品美女久久福利网站| 日韩高清一区在线| 91一区二区在线| 精品国产乱码91久久久久久网站| 亚洲欧美日韩国产成人精品影院| 人人精品人人爱| 色婷婷综合中文久久一本| 精品成人一区二区三区四区| 亚洲精品免费在线| 国产精品小仙女| 欧美一区二区三区日韩视频| 日韩美女视频一区二区| 国产一区在线观看视频| 欧美一区永久视频免费观看| 一区二区三区在线观看网站| 国产精品18久久久久久久久| 9191成人精品久久| 亚洲一区在线观看免费| 99re成人在线| 欧美激情一区在线观看| 韩日精品视频一区| 91麻豆精品国产无毒不卡在线观看| 亚洲欧美成人一区二区三区| 国产suv精品一区二区883| 日韩精品一区在线| 蜜臀99久久精品久久久久久软件| 欧美三级视频在线| 夜夜揉揉日日人人青青一国产精品| 国产大陆亚洲精品国产| 精品sm捆绑视频| 国精品**一区二区三区在线蜜桃 | 欧美四级电影网| 亚洲欧美激情视频在线观看一区二区三区 | 国产精品色在线观看| 国产精品一区二区果冻传媒| 精品国产欧美一区二区| 男人的天堂亚洲一区| 91精品国产麻豆国产自产在线| 亚洲自拍与偷拍| 欧美日韩一区二区三区在线看| 亚洲亚洲精品在线观看| 欧美亚洲综合一区| 性感美女极品91精品| 制服丝袜激情欧洲亚洲| 日本v片在线高清不卡在线观看| 欧美日韩免费一区二区三区视频 | 中文字幕一区二区三区四区不卡| 大陆成人av片|