複数のファイル記述子を同時に監視

#include < sys/select.h >

#include < stdio.h >

int main(){
    int n;
    fd_set readfds;
    struct timeval tv;
    
    FD_ZERO(&readfds);
    FD_SET(0, &readfds);
    FD_SET(4, &readfds);
    
    tv.tv_sec = 2;
    tv.tv_usec = 500000;
    
    n = select(5, &readfds, NULL, NULL, &tv);
    
    if (n < 0){
        perror("select");
        return 1;
    } else if (n == 0){
        printf("time out \n");
    } else {
        if (FD_ISSET(0, &readfds)){
            printf("input from fd = 0\n");
        }
        if (FD_ISSET(4, &readfds)){
            printf("input from fd = 4\n");
        }
    }
    return 0;
}

utimes

#include < sys/time.h >

#include < time.h >
#include < stdio.h >

int main(){
    struct timeval times[2];
    struct tm t;
    
    t.tm_sec = 7;
    t.tm_min = 14;
    t.tm_hour = 12;
    t.tm_mday = 19;
    t.tm_mon = 0;
    t.tm_year = 138;
    t.tm_isdst = 0;
    times[0].tv_sec = mktime(&t);
    times[0].tv_usec = 0;
    times[1] = times[0];
    
    if (utimes("file.txt",times) < 0){
        perror("utimes");
        return 1;
    }
    return 0;
}

utime

#include 
#include 

#include 
#include 

int main()
{
    struct utimbuf buf;
    struct tm t;
    
    t.tm_sec = 7;
    t.tm_min = 14;
    t.tm_hour = 12;
    t.tm_mday = 19;
    t.tm_mon = 0;
    t.tm_year = 138;
    t.tm_isdst = 0;
    buf.actime =mktime(&t);
    buf.modtime = buf.actime;
    
    if (utime("file.txt", &buf) < 0){
        perror("utime");
        return 1;
    }
    return 0;
}

lstat

#include < sys/types.h >
#include < sys/stat.h >
#include < unistd.h >

#include < time.h >
#include < stdio.h >

int main()
{
    struct stat buf;
    
    if(lstat("file.txt", &buf) < 0){
        perror("lstat");
        return 1;
    }
    
    printf("%s", ctime(&buf.st_mtime));
    return 0;
}

stat

#include < sys/types.h >
#include < sys/stat.h >
#include < unistd.h >

#include 
#include 

int main(){
    struct stat buf;
    
    if (stat("file.txt", &buf) < 0){
        perror("stat");
        return 1;
    }
    printf("%s", ctime(&buf.st_mtime));
    return 0;
}

truncate

#include < sys/types.h >
#include < unistd.h >

#include 

int main(){
    if (truncate("file.txt", 10) < 0){
        perror("truncate");
        return 1;
    }
    return 0;
}

readlink

#include 
#include 

int main()
{
    ssize_t n;
    char buf[4096];
    
    if ((n = readlink("newfile.txt", buf, sizeof buf - 1)) < 0){
        perror("readlink");
        return 1;
    }
    
    buf[n] = '\0';
    printf("%s\n", buf);
    
    return 0;
}

rmdir

#include < unistd.h >
#include < stdio.h >

int main(){
    if (rmdir("work") < 0){
        perror("rmdir");
        return 1;
    }
    return 0;
}