Skip to content
BSD syscall#83

svc · unix #83

setitimer

Arms or disarms one of the per-process interval timers.

Prototype

int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv);

Returns: int

Arguments

NameTypeDirDescription
whichu_int-
itvstruct itimerval-
oitvstruct itimerval-

Version history

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard83
xnu-1699.24.8macOS 10.7 Lion83
xnu-2050.18.24macOS 10.8 Mountain Lion83
xnu-2422.115.4macOS 10.9 Mavericks83
xnu-2782.40.9macOS 10.10 Yosemite83
xnu-3247.1.106macOS 10.11 El Capitan83
xnu-3789.1.32macOS 10.12 Sierra83
xnu-4570.1.46macOS 10.13 High Sierra83
xnu-4903.221.2macOS 10.14 Mojave83
xnu-6153.11.26macOS 10.15 Catalina83
xnu-7195.50.7.100.1macOS 11.0 Big Sur83
xnu-8019.41.5macOS 12.0 Monterey83
xnu-8792.41.9macOS 13.0 Ventura83
xnu-10002.1.13macOS 14.0 Sonoma83
xnu-11215.1.10macOS 15.0 Sequoia83
xnu-11417.101.15macOS 15.4 Sequoia83
xnu-12377.1.9macOS 26.0 Tahoe83
xnu-10002.41.9—83
xnu-10002.61.3—83
xnu-10002.81.5—83
xnu-10063.101.15—83
xnu-10063.121.3—83
xnu-10063.141.1—83
xnu-11215.41.3—83
xnu-11215.61.5—83
xnu-11215.81.4—83
xnu-11417.121.6—83
xnu-11417.140.69—83
xnu-12377.101.15—83
xnu-12377.41.6—83
xnu-12377.61.12—83
xnu-12377.81.4—83
xnu-1486.2.11—83
xnu-1504.15.3—83
xnu-1504.3.12—83
xnu-1504.7.4—83
xnu-1504.9.17—83
xnu-1504.9.26—83
xnu-1504.9.37—83
xnu-1699.22.73—83
xnu-1699.22.81—83
xnu-1699.24.23—83
xnu-1699.26.8—83
xnu-1699.32.7—83
xnu-2050.22.13—83
xnu-2050.24.15—83
xnu-2050.48.11—83
xnu-2050.7.9—83
xnu-2050.9.2—83
xnu-2422.1.72—83
xnu-2422.100.13—83
xnu-2422.110.17—83
xnu-2422.90.20—83
xnu-2782.1.97—83
xnu-2782.10.72—83
xnu-2782.20.48—83
xnu-2782.30.5—83
xnu-3247.10.11—83
xnu-3248.20.55—83
xnu-3248.30.4—83
xnu-3248.40.184—83
xnu-3248.50.21—83
xnu-3248.60.10—83
xnu-3789.21.4—83
xnu-3789.31.2—83
xnu-3789.41.3—83
xnu-3789.51.2—83
xnu-3789.60.24—83
xnu-3789.70.16—83
xnu-4570.20.62—83
xnu-4570.31.3—83
xnu-4570.41.2—83
xnu-4570.51.1—83
xnu-4570.61.1—83
xnu-4570.71.2—83
xnu-4903.231.4—83
xnu-4903.241.1—83
xnu-4903.270.47—83
xnu-6153.101.6—83
xnu-6153.121.1—83
xnu-6153.141.1—83
xnu-6153.41.3—83
xnu-6153.61.1—83
xnu-6153.81.5—83
xnu-7195.101.1—83
xnu-7195.121.3—83
xnu-7195.141.2—83
xnu-7195.60.75—83
xnu-7195.81.3—83
xnu-8019.61.5—83
xnu-8019.80.24—83
xnu-8020.101.4—83
xnu-8020.121.3—83
xnu-8020.140.41—83
xnu-8792.61.2—83
xnu-8792.81.2—83
xnu-8796.101.5—83
xnu-8796.121.2—83
xnu-8796.141.3—83

Examples

Fire SIGALRM every 500ms

#include <sys/time.h>

struct itimerval it = {
    .it_interval = { .tv_sec = 0, .tv_usec = 500000 },
    .it_value    = { .tv_sec = 0, .tv_usec = 500000 },
};
setitimer(ITIMER_REAL, &it, NULL);

Notes

Setting it_value to zero disarms the timer; setting it_interval to non-zero requests periodic firing. Signal delivery is best-effort and can be coalesced if the process cannot run handlers fast enough. Note that only one timer per kind exists per process, so libraries that quietly install one will collide with application code.

Related APIs

getitimersigactionsigsuspendgettimeofdaykill