În această pagină se prezintă ce anume și cum se testează
Întoarce-mă la pagina temei
$ ./child1 1 2 3 [STDOUT] Salut, sunt child1! [STDERR] Salut, sunt child1! Numar de parametri 4 Param 0 = ./child1 Param 1 = 1 Param 2 = 2 Param 3 = 3 Work loop
$ for i in `seq 1 10`; do ./child2; done; Am citit din memoria partajata: 0 Am citit din memoria partajata: 1 Am citit din memoria partajata: 2 Am citit din memoria partajata: 3 Am citit din memoria partajata: 4 Work loop
$ ./child3 [PANIC] Somebody called exit() $ ./child3 [PANIC] Somebody called exit() $ ./child3 Value = 10 Work loop
$ ./child4 Child4 started execution! Work loop
$ ./guardian un_binar_care_nu_există The child program does not exist!
Pe Windows, checkerul nu mai redirectează ieșirile standard ale guardianului in fisiere
Recomand utilizarea acestei funcții de raportare:
static void report_error(char *filename, char *info) { DWORD written = -1; err = CreateFile( filename, FILE_WRITE_DATA, FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); CHECK(err, !=, INVALID_HANDLE_VALUE, "CreateFile()", -1); CHECK(WriteFile(err, info, strlen(info), &written, NULL), !=, 0, "WriteFile()", -1); CHECK(CloseHandle(err), !=, 0, "CloseHandle()", -1); } #define RUNNING "Guardian is already running\r\n" #define NOT_EXIST "The child program does not exist!\r\n" report_error("__child_does_not_exist", NOT_EXIST); report_error("__guardian_already_running", RUNNING);