The following code snippet shows how to begin monitoring the fs-nfs2 process:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/stat.h> #include <sys/netmgr.h> #include <fcntl.h> #include <ha/ham.h> int main(int argc, char *argv[]) { int status; ham_entity_t *ehdl; ham_condition_t *chdl; ham_action_t *ahdl; char *fsnfspath; int fsnfs2pid; fsnfspath = strdup("/usr/sbin/fs-nfs2"); fsnfs2pid = -1; ham_connect(0); ehdl = ham_attach("Fs-nfs2", ND_LOCAL_NODE, fsnfs2pid, fsnfspath, 0); if (ehdl != NULL) { chdl = ham_condition(ehdl,CONDDEATH, "Death", HREARMAFTERRESTART); if (chdl != NULL) { ahdl = ham_action_restart(chdl, "Restart", fsnfspath, HREARMAFTERRESTART); if (ahdl == NULL) printf("add action failed\n"); else { ahdl = ham_action_waitfor(chdl, "Delay1", NULL, 2000, HREARMAFTERRESTART); if (ahdl == NULL) printf("add action failed\n"); ahdl = ham_action_execute(chdl, "MountDir1", "/bin/mount -t nfs a.b.c.d:/dir1 /dir1", HREARMAFTERRESTART|HACTIONDONOW)); if (ahdl == NULL) printf("add action failed\n"); ahdl = ham_action_waitfor(chdl, "Delay2", NULL, 2000, HREARMAFTERRESTART); if (ahdl == NULL) printf("add action failed\n"); ahdl = ham_action_execute(chdl, "Mountdir2", "/bin/mount -t nfs a.b.c.d:/dir2 /dir2", HREARMAFTERRESTART|HACTIONDONOW); 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); }