0

私はCコーディングに関するチュートリアルをオンラインでフォローしてきましたが、コードはApacheAPRライブラリを使用しています。apr_proc_t構造体を使用して外部アプリを実行します。私はこの関数について混乱しています、誰かがこの関数の意味を説明できますか?

apr_status_t apr_procattr_cmdtype_set   (   apr_procattr_t *    attr,
        apr_cmdtype_e   cmd 
    )       

Set what type of command the child process will call.

Parameters:
    attr    The procattr we care about.
    cmd The type of command. One of:

                APR_SHELLCMD     --  Anything that the shell can handle
                APR_PROGRAM      --  Executable program   (default) 
                APR_PROGRAM_ENV  --  Executable program, copy environment
                APR_PROGRAM_PATH --  Executable program on PATH, copy env
4

1 に答える 1

2

このapr_procattr_cmdtype_set関数は、外部コマンドをどのように実行するかをAPRに指示するために使用されます。おそらく、内部フラグを設定し、少しの簿記を行います。

見てみましょうenum apr_cmdtype_e

APR_SHELLCMD
シェルを使用してプログラムを呼び出す

APR_PROGRAM
プログラムを直接呼び出します。コピーされた環境はありません

APR_PROGRAM_ENV
プログラムを呼び出して、環境を複製します

APR_PROGRAM_PATH
PATHでプログラムを検索し、環境を使用します

APR_SHELLCMD_ENV
シェルを使用してプログラムを呼び出し、環境を複製します

最初と最後のオプション(APR_SHELLCMDおよびAPR_SHELLCMD_ENV)は、「ポータブルバージョンを使用するsystem」(現在の環境変数を新しいプロセスにコピーするかどうかに関係なく)と言っています。forkその他は、Unix /execペアのバリエーションであり、exec使用する関数ファミリのどれを選択するかを示すフラグが付いています。

于 2012-07-26T21:16:04.027 に答える