Another tricky difference: signals

Signal delivery semantics differ between Unix-like systems
Mainly based on SysV vs. BSD heritage

BSD-ish systems generally restart active syscalls when a signal is received

SysV-ish systems let the syscall return EINTR

There are also ambiguities over whether signal handlers are reinstated after they are run

OpenSSH uses a technique from W. Richard Stevens to cope with this
Write our own signal() replacement with consistent semantics
