ace的程序管理主要是使用process.h和process_manager.h這兩個檔案,process.h檔案中包含ace_process、ace_process_options兩個類,ace_process_options是對程序相關資訊的描述,包括程序名,引數、環境變數、工作目錄這幾個常見的引數。ace_process類主要是對程序的操作,包括生成、終止、訊號傳送等。
ace_process_options類的常用函式說明:
1、建構函式
ace_process_options (bool inherit_environment = true,
size_t command_line_buf_len = default_command_line_buf_len,
size_t env_buf_len = environment_buffer,
size_t max_env_args = max_environment_args,
size_t max_cmdline_args = max_command_line_options);
inherit_environment:是否繼承現有程序的環境
command_line_buf_len:command-line引數的最大允許長度,預設1024
env_buf_len:環境引數最大長度,預設16 * 1024
max_env_args:最大允許環境引數個數,512
max_cmdline_args:最大允許cmdline引數個數,128
2、設定工作目錄
void working_directory (const char *wd);
3、命令列執行引數
int command_line (const ace_tchar *format, ...);
int command_line (const ace_tchar * const argv);
第乙個引數以"\0"結尾,第二個參考argc的模式,以null結尾
4、程序名稱(使用中為程式執行的路徑)
void process_name (const ace_tchar *name);
5、獲取工作目錄
ace_tchar *working_directory (void);
6、獲取命令列(字串形式,以「\0」結尾)
ace_tchar *command_line_buf (size_t *max_len = 0);
7、獲取命令列(argv形式,以null結尾)
ace_tchar * const *command_line_argv (void);
ace_process類常用函式
1、根據options建立新的程序
virtual pid_t spawn (ace_process_options &options);
2、程序結束後需要呼叫的wait,如果不呼叫,會造成殭屍程序
pid_t wait (ace_exitcode *status = 0,
int wait_options = 0);
3、向程序傳送訊號
int kill (int signum = sigint);
4、結束程序,而不等待其正常終止
int terminate (void);
5、程式是否在執行,1:執行,0:未執行
int running (void) const;
6、獲取子程序返回值
int return_value (void) const;
說明:此類如果使用預設賦值函式,會造成淺拷貝問題,如果想賦值其他類變數,建議使用new類變數。
例程:
test.cpp
#include #include #include #include using namespace std;
int main()
{ ace::init();
ace_process_options apo;
//設定相關引數
apo.process_name("/home/dev/test/vfork/child/child");
apo.command_line("child -6");
apo.working_directory("/home/dev/test");
//獲取相關引數
cout
cout<
//呼叫wait,不呼叫的話會造成殭屍程序
在執行目錄生成檔案
子程序顯示的名稱中只顯示command line引數
父程序相關引數返回
程序特例 殭屍程序 孤兒程序 守護程序
殭屍程序 子程序結束,父程序尚未呼叫wait 子程序資源,子程序的pcb還殘留在核心,造成資源的浪費 孤兒程序 父程序先於子程序結束,子程序成為孤兒程序,子程序修改pcb使其父程序為init程序,孤兒程序結束後,由init程序負責 其pcb資源 守護程序 daemon process 是linux中...
程序 程序組
1.程序組 1 程序組,也稱之為作業,bsd與1980年前後向unix中增加的乙個新特性,代表乙個或多個程序的集合。每個程序都屬於乙個程序組,在waitpid函式和kill函式的引數中都曾經使用到,作業系統設計的程序組的概念,是為了簡化對多個程序的管理。當父程序建立子程序的時候,預設子程序與父程序屬...
程序建立,程序等待,程序終止
1 程序建立,2 程序等待,3 程序終止 程序建立被定義為通過父程序建立子程序的過程。fork函式 函式原型 pid t fork void 特點 1.fork函式呼叫一次,返回兩次兩次返回值得區別分別是子程序當中的返回值為0,父程序當中的返回值為新建子程序的id 將id返回給父程序的原因是沒有函式...