Оба могут быть тривиально реализованы в системе POSIX следующим образом:
#include <poll.h>
int pause(){ return poll(0, 0, -1); }
int sleep(unsigned int s){ return poll(0, 0, s * 1000); }
Фактически, 2-ой обманывает, так как sleep
должен возвращать время, оставшееся до сна, если его прервать, но кого это волнуетоб этом \; -.
Но именно это усложнение является причиной, по которой sleep(3)
реализован более подробно в источнике glibc.В противном случае подойдет любой блокирующий не перезапускаемый системный вызов , включая, но не ограничиваясь, nanosleep(2)
, poll(2)
, select(2)
или sigsuspend(2)
.Что использовать - это вопрос совместимости.