시스템 시간변경은 어떻게?

MackTheKnife의 이미지

adjtime이나 adjtimex를 해도 시스템 시간이 변경이 안되네여..
ps:쉘에서 date를 쓰면된다고 올려주지마세여..

int main()
{
    struct tm newTimeStruct;
    time_t newTime,oldTime;
    struct timeval delta;
    int ret;
    struct timex timeX;

    char timeString[15];
        sprintf(timeString,"%s","20040301123456");

    if(time(&oldTime) == -1)
    {
        printf("time error");
    }

    strptime(timeString,"%Y%m%d%H%M%S",&newTimeStruct);
    newTime=mktime(&newTimeStruct);

    delta.tv_sec=newTime-oldTime;
    delta.tv_usec=0;

    //ret=adjtime(&delta,NULL); 
    timeX.modes=ADJ_OFFSET;
    timeX.offset=(newTime-oldTime)*1000000;
    ret=adjtimex(&timeX);

    if(ret < 0)
        perror("set time FAIL");

}

에러는 Invalid argument가 나오는데..argument가 잘못된거 같지는 않은데..

yundream의 이미지

settimeofday(2)

한 시간전으로 되돌리기

#include <sys/time.h>
#include <string.h>

int main()
{
    struct timeval timebuf;
    gettimeofday(&timebuf, NULL);
    timebuf.tv_sec -= 3600;
    settimeofday(&timebuf, NULL);
}