#include #include #include #include void silly_function(char *pathname) { struct stat f, we; int rfd, wfd; char *buf; stat(pathname, &f); stat("./critical", &we); if (f.st_dev == we.st_dev && f.st_ino == we.st_ino) { return; } rfd = open(pathname, O_RDONLY); buf = malloc(f.st_size - 1); read(rfd, buf, f.st_size - 1); close(rfd); stat(pathname, &f); if (f.st_dev == we.st_dev && f.st_ino == we.st_ino) { return; } wfd = open(pathname, O_WRONLY | O_TRUNC); write(wfd, buf, f.st_size - 1); close(wfd); free(buf); } int main() { silly_function("./not"); }