Skip to content
Snippets Groups Projects
Verified Commit ba711deb authored by Jeremy Soller's avatar Jeremy Soller
Browse files

Convert select example to use pipes

parent 378ea3ac
No related branches found
No related tags found
No related merge requests found
...@@ -6,19 +6,37 @@ ...@@ -6,19 +6,37 @@
#include "test_helpers.h" #include "test_helpers.h"
int main(void) { int main(void) {
int fd = open("select.c", 0, 0); int pipefd[2];
if (pipe2(pipefd, O_NONBLOCK) < 0) {
perror("pipe");
return 1;
}
char c = 'c';
if (write(pipefd[1], &c, sizeof(c)) < 0) {
perror("write");
return 1;
}
fd_set read; fd_set read;
FD_ZERO(&read); FD_ZERO(&read);
FD_SET(fd, &read); FD_SET(pipefd[0], &read);
printf("Is set before? %d\n", FD_ISSET(fd, &read)); printf("Is set before? %d\n", FD_ISSET(pipefd[0], &read));
// This should actually test TCP streams and stuff, but for now I'm simply // This should actually test TCP streams and stuff, but for now I'm simply
// testing whether it ever returns or not. // testing whether it ever returns or not.
printf("Amount of things ready: %d\n", select(fd + 1, &read, NULL, NULL, NULL)); int nfds = select(pipefd[0] + 1, &read, NULL, NULL, NULL);
if (nfds < 0) {
perror("select");
return 1;
}
printf("Amount of things ready: %d\n", nfds);
printf("Is set after? %d\n", FD_ISSET(pipefd[0], &read));
printf("Is set after? %d\n", FD_ISSET(fd, &read)); close(pipefd[0]);
close(pipefd[1]);
close(fd); return 0;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment