Can you try this: https://www.netbsd.org/~christos/res_kqueue.diff 
<https://www.netbsd.org/~christos/res_kqueue.diff> ?

christos

> On Sep 29, 2021, at 6:12 PM, Pawel S. Veselov <pawel.vese...@gmail.com> wrote:
> 
> #include <netdb.h>
> #include <stdio.h>
> #include <unistd.h>
> #include <sys/wait.h>
> #include <fcntl.h>
> 
> int main(int argc, char ** argv) {
> 
>        struct addrinfo * res;
> 
>        getaddrinfo("www.netbsd.org <http://www.netbsd.org/>", NULL, NULL, 
> &res);
> 
>        pid_t pid = fork();
>        if (pid < 0) {
>                perror("fork");
>                return 1;
>        }
> 
>        if (!pid) {
>                // child
>                int fd = open("/etc/hosts", O_RDONLY);
>                getaddrinfo("www.netbsd.com <http://www.netbsd.com/>", NULL, 
> NULL, &res);
>                char buf[101];
>                int rc;
>                while (1) {
>                        rc = read(fd, buf, 100);
>                        if (rc < 0) { perror("read"); }
>                        if (rc <= 0) { break; }
>                        buf[rc] = 0;
>                        fprintf(stdout, "%s", buf);
>                }
>                fprintf(stdout, "\n");
>                return !rc ? 0 : 1;
>        } else {
>                int s;
>                while (1) {
>                        waitpid(pid, &s, 0);
>                        if (!WIFEXITED(s)) {
>                                fprintf(stdout, "not ready\n");
>                                continue;
>                        }
>                        return WEXITSTATUS(s);
>                        break;
>                }
>        }
> 
> }

Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to