/* Opens a file and then runs a subprocess that tries to close the file. (Pintos does not have inheritance of file handles, so this must fail.) The parent process then attempts to use the file handle, which must succeed. */ #include #include #include "tests/userprog/sample.inc" #include "tests/lib.h" #include "tests/main.h" void test_main (void) { char child_cmd[128]; int handle; CHECK ((handle = open ("sample.txt")) > 1, "open \"sample.txt\""); snprintf (child_cmd, sizeof child_cmd, "child-close %d", handle); msg ("wait(exec()) = %d", wait (exec (child_cmd))); check_file_handle (handle, "sample.txt", sample, sizeof sample - 1); }