acl  3.5.3.0
acl_proctl.h
浏览该文件的文档.
1 #ifndef ACL_PROCTL_INCLUDE_H
2 #define ACL_PROCTL_INCLUDE_H
3 
4 #include "../stdlib/acl_define.h"
5 #include <stdlib.h>
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
11 /**
12  * 获取控制进程的执行程序所在的路径位置
13  * @param buf {char*} 存储结果的内存位置, 返回的结果的结尾
14  * 不包含 "\" 或 "/", 如:"C:\\test_path\\test1_path", 而不是
15  * "C:\\test_path\\test1_path\\"
16  * @param size {size_t} buf 的空间大小
17  */
18 ACL_API void acl_proctl_daemon_path(char *buf, size_t size);
19 
20 /**
21  * 初始化进程控制框架(仅 acl_proctl_start 需要)
22  * @param progname {const char*} 控制进程进程名
23  */
24 ACL_API void acl_proctl_deamon_init(const char *progname);
25 
26 /**
27  * 控制进程作为后台服务进程运行,监视所有子进程的运行状态,
28  * 如果子进程异常退出则会重启该子进程
29  */
30 ACL_API void acl_proctl_daemon_loop(void);
31 
32 /**
33  * 在控制进程启动后,启动一个子进程
34  * @param progchild {const char*} 子进程的程序名
35  * @param argc {int} argv 数组的长度
36  * @param argv {char* []}
37  * @return 0: ok; -1: error
38  */
39 ACL_API int acl_proctl_deamon_start_one(const char *progchild, int argc, char *argv[]);
40 
41 /**
42  * 以命令方式启动某个子进程
43  * @param progname {const char*} 控制进程进程名
44  * @param progchild {const char*} 子进程进程名
45  * @param argc {int} argv 数组的长度
46  * @param argv {char* []} 传递给子进程的参数
47  */
48 ACL_API void acl_proctl_start_one(const char *progname,
49  const char *progchild, int argc, char *argv[]);
50 
51 /**
52  * 以命令方式停止某个子进程
53  * @param progname {const char*} 控制进程进程名
54  * @param progchild {const char*} 子进程进程名
55  * @param argc {int} argv 数组的长度
56  * @param argv {char* []} 传递给子进程的参数
57  */
58 ACL_API void acl_proctl_stop_one(const char *progname,
59  const char *progchild, int argc, char *argv[]);
60 
61 /**
62  * 以命令方式停止所有的子进程
63  * @param progname {const char*} 控制进程进程名
64  */
65 ACL_API void acl_proctl_stop_all(const char *progname);
66 
67 /**
68  * 以命令方式通知控制进程停止所有的子进程,并在子进程退出后控制进程也自动退出
69  * @param progname {const char*} 控制进程进程名
70  */
71 ACL_API void acl_proctl_quit(const char *progname);
72 
73 /**
74  * 列出当前所有正在运行的服务进程
75  * @param progname {const char*} 控制进程进程名
76  */
77 ACL_API void acl_proctl_list(const char *progname);
78 
79 /**
80  * 探测某个服务进程是否在运行
81  * @param progname {const char*} 控制进程进程名
82  * @param progchild {const char*} 子进程进程名
83  */
84 ACL_API void acl_proctl_probe(const char *progname, const char *progchild);
85 
86 /**
87  * 子进程调用接口,通过此接口与父进程之间建立控制/被控制关系
88  * @param progname {const char*} 子进程进程名
89  * @param onexit_fn {void (*)(void*)} 如果非空则当子进程退出时调用的回调函数
90  * @param arg {void*} onexit_fn 参数之一
91  */
92 ACL_API void acl_proctl_child(const char *progname, void (*onexit_fn)(void *), void *arg);
93 
94 #ifdef __cplusplus
95 }
96 #endif
97 
98 #endif
ACL_API void acl_proctl_quit(const char *progname)
ACL_API void acl_proctl_daemon_loop(void)
ACL_API int acl_proctl_deamon_start_one(const char *progchild, int argc, char *argv[])
ACL_API void acl_proctl_child(const char *progname, void(*onexit_fn)(void *), void *arg)
ACL_API void acl_proctl_stop_one(const char *progname, const char *progchild, int argc, char *argv[])
ACL_API void acl_proctl_daemon_path(char *buf, size_t size)
ACL_API void acl_proctl_stop_all(const char *progname)
ACL_API void acl_proctl_list(const char *progname)
ACL_API void acl_proctl_probe(const char *progname, const char *progchild)
ACL_API void acl_proctl_start_one(const char *progname, const char *progchild, int argc, char *argv[])
ACL_API void acl_proctl_deamon_init(const char *progname)