You cannot have any strictly ANSI compatible event loop on Linux, because the purpose of an event loop is to multiplex cleverly several inputs; on Linux to do that multiplexing, you have to call some syscalls like poll(2), pselect(2) or friends, and all these syscalls are not standardized in ANSI C (or ISO C99, or ISO C2011), but just in Posix.
solved ANSI C compatible event loop