#include void cmb(void) { if (mkdir("/mb", 0700) == -1) err(-1, "mkdir"); if (chdir("/mb") == -1) err(-1, "chdir"); char * const args[] = {"/bin/cmailbench", "-d", "1", "./", "1", NULL}; execv(args[0], args); err(-1, "exec"); } void forkwait(void (*f)(void)) { switch (fork()) { case -1: err(-1, "fork"); case 0: f(); errx(-1, "child returned"); } int status; if (wait(&status) == -1) err(-1, "wait"); if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) errx(-1, "child failed"); } void cleanup(void) { char * const args[] = {"/bin/rmtree", "/mb", NULL}; execv(args[0], args); err(-1, "exec"); } int main(int argc, char **argv) { for (;;) { forkwait(cmb); forkwait(cleanup); sleep(3); } return 0; }