#include #include #include #include #include #include #include int main(int argc, char **argv) { if (argc == 2 && strcmp(argv[1], "--healthcheck") == 0) { alarm(5); int fd = socket(AF_INET, SOCK_STREAM, 0); if (fd < 0) return 1; struct sockaddr_in addr = {0}; addr.sin_family = AF_INET; addr.sin_port = htons(5001); addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); int result = connect(fd, (struct sockaddr *)&addr, sizeof(addr)); close(fd); return result == 0 ? 0 : 1; } const char *lock = "/home/nfs_download/rsession/rtorrent.lock"; if (unlink(lock) < 0 && errno != ENOENT) { perror("Cannot remove stale rtorrent lock"); return 1; } argv[0] = "/usr/bin/rtorrent"; execv(argv[0], argv); perror("Cannot start rtorrent"); return 127; }