想让Ham帮我重启一个进程,但是使用过程中遇到些问题。
代码如下:
Ham代码
int main(int argc, char *argv[])
{
int status;
char *inetdpath;
ham_entity_t *ehdl;
ham_condition_t *chdl;
ham_action_t *ahdl;
int inetdpid;
if (argc > 1)
inetdpath = strdup(argv[1]);
else
inetdpath = strdup("/tmp/hamtest");
if (argc > 2)
inetdpid = atoi(argv[2]);
else
inetdpid = -1;
ham_connect(0);
ehdl = ham_attach(“hamtest”, ND_LOCAL_NODE, inetdpid, inetdpath, 0);
if (ehdl != NULL)
{
chdl = ham_condition(ehdl,CONDDEATH, “death”, HREARMAFTERRESTART);
if (chdl != NULL) {
ahdl = ham_action_restart(chdl, “restart”, inetdpath,
HREARMAFTERRESTART);
if (ahdl == NULL)
printf(“add action failed\n”);
}
else
printf(“add condition failed\n”);
}
else
printf(“add entity failed\n”);
ham_disconnect(0);
exit(0);
}
需要重启的进程代码:
int main(int argc, char *argv[]) {
procmgr_daemon( EXIT_SUCCESS, 0x000000FF );
sleep(1);
fprintf(stderr,“Welcome to the QNX Momentics IDE\n”);
sleep(1);
return 0;
}
我希望看到的是,进程2不断重启,输出fprintf。
但实际情况是,当我启动进程1后,可以看到进程2输出一次,并不重复输出
奇怪的事情在于,如果我 “slay syslogd”,或者一些别的进程,又可以看到进程2重启一次,输出fprintf,但并不重复输出
诸位老大,是我在进程2中少做了什么,还是这是个Ham的Bug?谢谢先