settimeofday işlevi sistem saatini argümanlarındaki değerlerle ayarlar. gettimeofday işlevindeki gibi mutlak zaman, mutlak zaman başlangıcından (epoch) beri geçen süre olarak ifade edilirken zaman dilimi bilgisi de zamandilimi bir boş gösterici ise yoksayılır.
settimeofday işlevini kullanırken süper kullanıcı olmak zorundasınız.
Bazı çekirdekler sistem saatini donanım saati gibi bir kaynaktan açılış sırasında ayarlar. Linux gibi diğerleri ise, sistem saatini "geçersiz" bir duruma getirir (saat okunmaya çalışılır ve başarısız olur). Sistem başlatma betikleri ile yapılan bir stime çağrısı ile sistem saati geçersiz durumdan çıkarılır.
settimeofday işlevi, sistem saatinin beklenmedik şekilde ileri ya da geri kalmasına ve sistemde çeşitli sorunlar çıkmasına sebep olur. Sistem saatini geçici olarak hızlandırarak ya da yavaşlatarak bir zamandan diğerine yumuşak bir geçiş yapmak için aşağıdaki adjtime işlevini kullanın.
Linux çekirdeği ile, adjtimex işlevi aynı şeyi yapar, ayrıca sistem saatinin hızında kalıcı değişiklikler yaparak sık sık düzeltme yapma ihtiyacını ortadan kaldırır.
Eğer işlev başarılı olursa sıfır değeri ile döner. Aksi takdirde, -1 ile döner ve errno değişkenine şu değer atanır:
- EPERM
Yetkileri yetersiz olduğundan bu süreç saati ayarlayamaz.
- ENOSYS
zamandilimi bir boş gösterici değil ama işletim sistemi zaman dilimi bilgisi ayarını desteklemiyor.