在 Linux 系統中,stime
是一個已經被廢棄的系統調用,用于設置系統的實時時間
clock_settime
:clock_settime
是 POSIX 標準中推薦的函數,用于設置指定時鐘的時間。你可以使用它來設置實時時鐘(CLOCK_REALTIME)或其他類型的時鐘。這個函數在大多數 Unix-like 系統上都有實現,包括 Linux、macOS 和 FreeBSD。#include <time.h>
int clock_settime(clockid_t clock_id, const struct timespec *tp);
示例代碼:
#include<stdio.h>
#include <time.h>
int main() {
struct timespec new_time;
clockid_t clock_id = CLOCK_REALTIME;
// 獲取當前時間
if (clock_gettime(clock_id, &new_time) == -1) {
perror("clock_gettime");
return 1;
}
// 修改時間
new_time.tv_sec += 10; // 增加10秒
// 設置新時間
if (clock_settime(clock_id, &new_time) == -1) {
perror("clock_settime");
return 1;
}
printf("Time has been set successfully.\n");
return 0;
}
settimeofday
:settimeofday
是一個較早的函數,用于設置系統的實時時間和微秒級別的時間。它在許多 Unix-like 系統上都有實現,但不是 POSIX 標準的一部分。#include <sys/time.h>
int settimeofday(const struct timeval *tv, const struct timezone *tz);
示例代碼:
#include<stdio.h>
#include <sys/time.h>
int main() {
struct timeval new_time;
struct timezone tz;
// 獲取當前時間
if (gettimeofday(&new_time, &tz) == -1) {
perror("gettimeofday");
return 1;
}
// 修改時間
new_time.tv_sec += 10; // 增加10秒
// 設置新時間
if (settimeofday(&new_time, &tz) == -1) {
perror("settimeofday");
return 1;
}
printf("Time has been set successfully.\n");
return 0;
}
請注意,這些方法可能需要 root 權限才能運行。在使用這些函數時,請確保你了解它們的行為和限制,并根據你的需求選擇合適的方法。