> dumping your program's stdout to /dev/null should result in an error
That's not what's happening though. The invocation is:
hello 1< /dev/null
i.e. stdout is read-only, and it seems reasonable that that should be an error.