Well, the print wasn't dying, because the close() test actually runs.
You mean in your updated new code? Because the code you posted doesn't die if print fails.
I guess my concern is why the invalid open returned true. Seems counterintuitive.
Um, if open succeeded, and print succeeded, then it must not have been an invalid open, so nothing counterintuitive there
Its very possible for a program to end after a successful open to it