int main() { int dmtcp_enabled = dmtcp_is_enabled(); if ( ! dmtcp_enabled ) { printf("\n *** dmtcp_is_enabled: executable seems to not be running" " under dmtcp_launch.\n\n"); } int original_generation; if ( dmtcp_enabled ) { original_generation = dmtcp_get_generation(); } int retval = dmtcp_checkpoint(); if (retval == DMTCP_AFTER_CHECKPOINT) { // Wait long enough for checkpoint request to be written out. while (dmtcp_get_generation() == original_generation) { sleep(1); } printf("*** dmtcp_checkpoint: This program has now invoked a checkpoint.\n" " It will resume its execution next.\n"); } else if (retval == DMTCP_AFTER_RESTART) { printf("*** dmtcp_checkpoint: This program is now restarting.\n"); } else if (retval == DMTCP_NOT_PRESENT) { printf(" *** dmtcp_checkpoint: DMTCP is not running." " Skipping checkpoint.\n"); } printf("\n*** Process done executing. Successfully exiting.\n"); if (retval == DMTCP_AFTER_CHECKPOINT) { printf("*** Execute ./dmtcp_restart_script.sh to restart.\n"); } return 0; }
int main(int argc, char *argv[]) { if (dmtcp_is_enabled()) { printf("DMTCP is present\n"); } else { printf("DMTCP is not present\n"); } FILE *fp = fopen("/tmp/msg", "w"); int counter = 0; while (1) { sleep(1); fprintf(fp, "Write counter value = %d to file\n", counter); fprintf(stdout, "Write counter value = %d to file\n", counter++); fflush(fp); if (counter == 5) { printf("Prior to dmtcp_checkpoint\n"); int ret = dmtcp_checkpoint(); if (ret == DMTCP_NOT_PRESENT) { printf("Checkpoint not successful\n"); } else if (ret == DMTCP_AFTER_CHECKPOINT){ printf("Checkpoint successful \n"); exit(0); } else if (ret == DMTCP_AFTER_RESTART) { printf("After restart \n"); } else { printf("Unknown state... exiting now!\n"); exit(-1); } fclose(fp); fp = fopen("/tmp/msg", "a"); } if (counter == 10) { printf("Exiting now!\n"); fclose(fp); if (truncate("/tmp/msg", 0) < 0) { perror("truncate: "); exit(-1); } exit(0); } } return 0; }
int main(int argc, char *argv[]) { char *user = (char*)malloc(strlen(getenv("USER"))+1); strcpy(user, getenv("USER")); printf("These tests depend on dmtcp_env.txt in local directory.\n"); int retval = dmtcp_checkpoint(); switch (retval) { case DMTCP_NOT_PRESENT: printf(""" test.c: Not launched under DMTCP. Please try again.\n"); return 1; case DMTCP_AFTER_CHECKPOINT: return 0; // Continue upon restart case DMTCP_AFTER_RESTART: break; default: printf("*** test.c: Internal error"); return 1; } int newuser_len = strlen("new-")+strlen(getenv("HOME"))+1+strlen(user)+1; char *newuser = (char*)malloc(newuser_len); strcpy(newuser, "new-"); strcpy(newuser+strlen(newuser), getenv("HOME")); strcpy(newuser+strlen(newuser), "-"); strcpy(newuser+strlen(newuser), user); printf("getenv(\"HOME\"): %s\ngetenv(\"FOO\"): %s\ngetenv(\"USER\"): %s\n", getenv("HOME"), getenv("FOO"), getenv("USER")); if (getenv("EDITOR")) { printf("Failure! EDITOR (was): %s; EDITOR (should be): NULL\n", getenv("EDITOR")); return 1; } if (strcmp(newuser, getenv("USER")) == 0) { printf("Success!\n"); return 0; } else { printf("Failure! USER (was): %s; USER (should be): %s\n", getenv("USER"), newuser); return 1; } }