#include #include #include #include #include #include #include #include void print_error(int i, int err, char* desc) { char buf[1024]; if (strerror_r(err, buf, sizeof(buf)) != 0) { snprintf(buf, sizeof(buf), "Unknown error (%d)", err); } fprintf(stderr, "[%d] [%d] [%d] %s (%d): %s\n", getpid(), time(NULL), i, desc, err, buf); } int main() { char path[MAXPATHLEN]; size_t len = sizeof(path); int i; { struct timeval now; gettimeofday(&now, NULL); srand(now.tv_usec); } for (i = 0; i < 10; ++i) { int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1}; if (sysctl(mib, 4, path, &len, NULL, 0) == -1) { print_error(i, errno, "sysctl() failed"); } if (readlink("/proc/curproc/file", path, sizeof(path)) == -1) { print_error(i, errno, "readlink() failed"); } struct timespec const delay = {0, 10000000 + 100000 * (rand() % 41)}; nanosleep(&delay, NULL); } return 0; }