Я новичок в этом форуме и программировании на C. Я хочу отображать время модификации tty перед сном и после сна (если я ввожу что-то на терминал во время сна). Я использую следующий код, но если я объявляю struct stat как глобальную переменную, это дает правильное время модификации, но не меняет его после сна. С другой стороны, я объявляю struct stat как локальную переменную, она дает мне совершенно неправильную дату, но, похоже, меняет дату после сна. Я пытаюсь понять это в течение двух дней, но не повезло. Пожалуйста, помогитеc программирование получить время модификации tty после сна
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <unistd.h>
#include <signal.h>
#include <stddef.h>
#include <string.h>
char *modTime;
void getmt();
time_t modifiedTime;
//struct stat statbuf; //this gives the correct modification time but does not change it after sleep
int main(int argc, char **argv)
{
int i, status = 0;
time_t now;
if (argc == 1) {
fprintf(stderr, "usage: %s file \n", argv[0]);
return(1);
}
for (i = 1; i < argc; i++)
{
struct stat statbuf;
if (lstat(argv[i], &statbuf)) {
perror(argv[i]);
status = 1;
}
else
{
getmt();
time(&now);
printf("\nNOW %ld\n", now);
sleep(20);
time(&now);
printf("after sleep %ld\n", now);
getmt();
}
}
return(status);
}
void getmt()
{
struct stat statbuf; //this does not give correct modification time but changes it after sleep
time_t modifiedTime;
//modification time of tty as string
modTime = ctime(&statbuf.st_mtime);
printf("\n last modified time as string %s\n", modTime);
//modification time of tty as long date
modifiedTime = statbuf.st_mtime;
printf ("last modified time as long date %ld\n", modifiedTime);
}
Отличный !! это сработало. Спасибо, Торек. – Gantavya