0

我使用以下方法在我的父进程中跟踪我的子进程及其“标题”:

struct c_process {
    string device;
    pid_t pid;
};

vector<c_process> children;

当我 SIGHUP 父级并重新加载其“配置”时,我会根据“文件夹”是否存在来终止并分叉这些子级。

Parent running
Folders /a1 /a3
Reads config and spawn processes (list of folders)
vector<c_process> = {['a1', 111], ['a3', 222]}
Something changes folders
Folders /a1 /a4 /a5
SIGHUP parent
Reads config and spawn processes
vector<c_process> = {['a1', 111], ['a4', 1121], ['a5', 452]}

当我阅读文件夹列表并需要决定“需要添加/分叉的内容”和“需要“删除/终止的内容”时,就会出现我的问题。

vector<string> config;
vector<c_process> c_process;

那么使用上述结构我该怎么做呢?

4

1 回答 1

0

请注意,如果 std::vector 增长并且没有保留足够的空间,它可能会通过旧元素的复制构造函数分配和构造新元素,然后销毁旧元素。如果 pid_t 是一些高级对象,这可能会受到伤害。另一种方法是在向量​​中只保留指针(可能是计数智能指针),从而避免破坏所引用的对象。

于 2013-09-26T18:06:30.670 回答