Check file handle in C using system calls

This commit is contained in:
Fabio Scotto di Santolo
2025-06-23 17:38:46 +02:00
parent 00a33abc23
commit 85ef4163db
10 changed files with 407 additions and 0 deletions

38
chp2/poll.c Normal file
View File

@@ -0,0 +1,38 @@
#include <stdio.h>
#include <unistd.h>
#include <poll.h>
#define TIMEOUT 5 /* poll timeout, in seconds */
int main(void) {
struct pollfd fds[2];
int ret;
/* watch stdin for input */
fds[0].fd = STDIN_FILENO;
fds[0].events = POLLIN;
/* watch stdout for ability to write (almost always true) */
fds[1].fd = STDOUT_FILENO;
fds[1].events = POLLOUT;
/* All set, block! */
ret = poll(fds, 2, TIMEOUT * 1000);
if (ret == -1) {
perror("poll");
return 1;
}
if (!ret) {
printf("%d seconds elapsed.\n", TIMEOUT);
return 0;
}
if (fds[0].revents & POLLIN)
printf("stdin is readable\n");
if (fds[1].revents & POLLOUT)
printf("stdout is writable\n");
return 0;
}