STTNet
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 宏定义 
静态 Public 成员函数 | 所有成员列表
stt::system::Process类 参考

进程管理的静态工具类 更多...

#include <sttnet.h>

静态 Public 成员函数

template<class... Args>
static bool startProcess (const std::string &name, const int &sec=-1, Args...args)
 启动一个新进程(可选择是否定时重启) 更多...
 
template<class Fn , class... Args>
static std::enable_if
<!std::is_convertible< Fn,
std::string >::value, bool >
::type 
startProcess (Fn &&fn, const int &sec=-1, Args &&...args)
 通过函数创建子进程(可选择是否定时重启) 更多...
 

详细描述

进程管理的静态工具类

成员函数说明

template<class... Args>
static bool stt::system::Process::startProcess ( const std::string &  name,
const int &  sec = -1,
Args...  args 
)
inlinestatic

启动一个新进程(可选择是否定时重启)

sec == -1 时,仅启动一次子进程;否则,会创建一个辅助子进程,定期重启该目标进程。

  • 定时启动时,辅助进程会屏蔽所有信号。
  • 启动的目标进程会屏蔽除 SIGCHLD 和 SIGTERM 的所有信号。
参数
Args可变参数类型(用于传递给目标程序的 argv)
name要执行的程序路径(如 /usr/bin/myapp
sec定时间隔(单位:秒)。若为 -1,则表示只启动一次,不定时。
args启动参数(第一个参数必须是程序名称,即 argv[0],末尾不需要添加 nullptr)
返回
true 父进程返回 true 表示启动(或调度)成功
false fork 或 execv 出错时返回 false
注解
  • 参数中不需要手动添加 nullptr;内部自动添加。
  • 执行失败后不会抛出异常;返回 false。
  • execv 会在子进程中替换当前进程镜像,不返回。
template<class Fn , class... Args>
static std::enable_if<!std::is_convertible<Fn, std::string>::value, bool>::type stt::system::Process::startProcess ( Fn &&  fn,
const int &  sec = -1,
Args &&...  args 
)
inlinestatic

通过函数创建子进程(可选择是否定时重启)

使用一个可调用对象(如 Lambda、函数指针、std::function)作为新子进程的主体逻辑。

  • sec == -1,函数仅执行一次;
  • 否则,会创建一个辅助进程定期重新 fork 并执行该函数。
参数
Fn可调用对象类型(如函数、Lambda)
Args可调用对象的参数类型
fn要执行的函数或可调用对象
sec定时间隔(单位:秒)。若为 -1,则表示只执行一次,不定时。
args要传递给函数的参数
返回
true 父进程返回 true 表示启动成功;子进程内部也会返回 true(用于链式调用等)
false 创建进程失败
注解
  • 函数的实际执行是在新 fork 出的子进程中。
  • 函数 fn 必须是可调用的;参数类型需能完美转发。
  • 子进程执行完毕后会退出;辅助进程将周期性地重新创建它。

该类的文档由以下文件生成: