#include #include #include #include #include #define __NR_revoke 284 _syscall1(int, revoke, const char *, path) int parent() { int fd, ret; fd = open("/dev/null", O_RDWR); if (fd < 0) { printf("open() in parent failed!\n"); return 1; } const char foo[] = "hsdfuknf23uhzfneiou1208jiomiiu"; while (1) { printf("write...\n"); ret = write(fd, foo, sizeof(foo)); if (ret <= 0) { printf("write() in parent failed with %d (%s)!\n", errno, strerror(errno)); return 1; } } } int child() { sleep(3); revoke("/dev/null"); printf("revoke() returned %d (%s)\n", errno, strerror(errno)); return 0; } int main(int argc, char *argv[]) { int ret; ret = fork(); if (ret == 0) { return child(); } else if (ret == -1) { printf("fork() failed!\n"); return 1; } else { return parent(); } return 2; }