Technically it's the reverse, Windows is POSIX compliant, and Linux is almost compliant. However, the non-posix features liunx provides makes it easy to port from the various *nixes where as Windows precise POSIX compliance ensures virtually nothing runs unless the app is written purely to the POSIX spec.