mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-15 17:30:53 +08:00
cc05b877a2
first commit acl to github
99 lines
2.7 KiB
C
99 lines
2.7 KiB
C
#ifndef __ACL_PROCTL_INCLUDE_H__
|
|
#define __ACL_PROCTL_INCLUDE_H__
|
|
|
|
#include "stdlib/acl_define.h"
|
|
#include <stdlib.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* 获取控制进程的执行程序所在的路径位置
|
|
* @param buf {char*} 存储结果的内存位置, 返回的结果的结尾
|
|
* 不包含 "\" 或 "/", 如:"C:\\test_path\\test1_path", 而不是
|
|
* "C:\\test_path\\test1_path\\"
|
|
* @param size {size_t} buf 的空间大小
|
|
*/
|
|
ACL_API void acl_proctl_daemon_path(char *buf, size_t size);
|
|
|
|
/**
|
|
* 初始化进程控制框架(仅 acl_proctl_start 需要)
|
|
* @param progname {const char*} 控制进程进程名
|
|
*/
|
|
ACL_API void acl_proctl_deamon_init(const char *progname);
|
|
|
|
/**
|
|
* 控制进程作为后台服务进程运行,监视所有子进程的运行状态,
|
|
* 如果子进程异常退出则会重启该子进程
|
|
*/
|
|
ACL_API void acl_proctl_daemon_loop(void);
|
|
|
|
/**
|
|
* 在控制进程启动后,启动一个子进程
|
|
* @param progchild {const char*} 子进程的程序名
|
|
* @param argc {int} argv 数组的长度
|
|
* @param argv {char* []}
|
|
* @return 0: ok; -1: error
|
|
*/
|
|
ACL_API int acl_proctl_deamon_start_one(const char *progchild, int argc, char *argv[]);
|
|
|
|
/**
|
|
* 以命令方式启动某个子进程
|
|
* @param progname {const char*} 控制进程进程名
|
|
* @param progchild {const char*} 子进程进程名
|
|
* @param argc {int} argv 数组的长度
|
|
* @param argv {char* []} 传递给子进程的参数
|
|
*/
|
|
ACL_API void acl_proctl_start_one(const char *progname,
|
|
const char *progchild, int argc, char *argv[]);
|
|
|
|
/**
|
|
* 以命令方式停止某个子进程
|
|
* @param progname {const char*} 控制进程进程名
|
|
* @param progchild {const char*} 子进程进程名
|
|
* @param argc {int} argv 数组的长度
|
|
* @param argv {char* []} 传递给子进程的参数
|
|
*/
|
|
ACL_API void acl_proctl_stop_one(const char *progname,
|
|
const char *progchild, int argc, char *argv[]);
|
|
|
|
/**
|
|
* 以命令方式停止所有的子进程
|
|
* @param progname {const char*} 控制进程进程名
|
|
*/
|
|
ACL_API void acl_proctl_stop_all(const char *progname);
|
|
|
|
/**
|
|
* 以命令方式通知控制进程停止所有的子进程,并在子进程退出后控制进程也自动退出
|
|
* @param progname {const char*} 控制进程进程名
|
|
*/
|
|
ACL_API void acl_proctl_quit(const char *progname);
|
|
|
|
/**
|
|
* 列出当前所有正在运行的服务进程
|
|
* @param progname {const char*} 控制进程进程名
|
|
*/
|
|
ACL_API void acl_proctl_list(const char *progname);
|
|
|
|
/**
|
|
* 探测某个服务进程是否在运行
|
|
* @param progname {const char*} 控制进程进程名
|
|
* @param progchild {const char*} 子进程进程名
|
|
*/
|
|
ACL_API void acl_proctl_probe(const char *progname, const char *progchild);
|
|
|
|
/**
|
|
* 子进程调用接口,通过此接口与父进程之间建立控制/被控制关系
|
|
* @param progname {const char*} 子进程进程名
|
|
* @param onexit_fn {void (*)(void*)} 如果非空则当子进程退出时调用的回调函数
|
|
* @param arg {void*} onexit_fn 参数之一
|
|
*/
|
|
ACL_API void acl_proctl_child(const char *progname, void (*onexit_fn)(void *), void *arg);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|