JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... e _GNU_SOURCE /* feature_test_macros (7) 参照 */ #include < signal.h > #include < poll.h > int ppoll(struct pollfd * fds , nfds_t nfds , const struct timespec * tmo_p , const sigset_t * sigmask ); 説明 poll () performs a similar task to select (2): i ... struct pollfd { int fd; /* file descriptor */ short events; /* requested events */ short revents; /* returned events */ }; nfds には、 fds 配列の要素数を指定する。 fd フィールドには、オープンされたファイルのファイルディスクリプターが入る。 このフィー ... グナルの捕捉を安全に待つことができる。 timeout 引数の精度の違いを除くと、以下の ppoll () の呼び出しは、 ready = ppoll(&fds, nfds, tmo_p, &sigmask); 次の呼び出しを atomic に実行するのとほぼ等価である。 sigset_t origmask; int timeout; timeout = (tmo_p = ... ... e _GNU_SOURCE /* feature_test_macros (7) 参照 */ #include < signal.h > #include < poll.h > int ppoll(struct pollfd * fds , nfds_t nfds , const struct timespec * tmo_p , const sigset_t * sigmask ); 説明 poll () performs a similar task to select (2): i ... struct pollfd { int fd; /* file descriptor */ short events; /* requested events */ short revents; /* returned events */ }; nfds には、 fds 配列の要素数を指定する。 fd フィールドには、オープンされたファイルのファイルディスクリプターが入る。 このフィー ... グナルの捕捉を安全に待つことができる。 timeout 引数の精度の違いを除くと、以下の ppoll () の呼び出しは、 ready = ppoll(&fds, nfds, tmo_p, &sigmask); 次の呼び出しを atomic に実行するのとほぼ等価である。 sigset_t origmask; int timeout; timeout = (tmo_p = ... ... { /* main loop */ /* Initialize readfds, writefds, and exceptfds before the pselect() call. (Code omitted.) */ r = pselect(nfds, &readfds, &writefds, &exceptfds, NULL, &empty_mask); if (r == -1 && errno != EINTR) { /* Handle error */ } if (got_SIGCHL ... 。 タイムアウトに依存したコードは通常移植性がなく、 デバッグも難しくなる。 2. 上述したように、 効率的なプログラムを書くには nfds の値を適切に計算して与えなければならない。 3. select () コールの終了後に結果をチェックして、 適切に対応するつもりのないファ ... N); forward_port = atoi(argv[2]); h = listen_socket(atoi(argv[1])); if (h == -1) exit(EXIT_FAILURE); for (;;) { int ready, nfds = 0; ssize_t nbytes; fd_set readfds, writefds, exceptfds; FD_ZERO(&readfds); FD_ZERO(&writefds); FD_ZERO(&exceptfds); FD_S ... ... 場合 */ #include < sys/time.h > #include < sys/types.h > #include < unistd.h > int select(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , struct timeval * timeout ); void FD_CLR(int fd , fd_set * se ... d_set * set ); void FD_SET(int fd , fd_set * set ); void FD_ZERO(fd_set * set ); #include < sys/select.h > int pselect(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , const struct timespec * timeout , const sigset_t * sigmask ) ... FD_ISSET () は集合にファイルディスクリプターがあるかどうか調べる; このマクロは select () が終了した後に使うと便利である。 nfds は 3 つの集合に含まれるファイルディスクリプターの最大値に 1 を足したものである。 timeout 引き数は、 select () がファイルデ ... ... 場合 */ #include < sys/time.h > #include < sys/types.h > #include < unistd.h > int select(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , struct timeval * timeout ); void FD_CLR(int fd , fd_set * se ... d_set * set ); void FD_SET(int fd , fd_set * set ); void FD_ZERO(fd_set * set ); #include < sys/select.h > int pselect(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , const struct timespec * timeout , const sigset_t * sigmask ) ... FD_ISSET () は集合にファイルディスクリプターがあるかどうか調べる; このマクロは select () が終了した後に使うと便利である。 nfds は 3 つの集合に含まれるファイルディスクリプターの最大値に 1 を足したものである。 timeout 引き数は、 select () がファイルデ ... ... 場合 */ #include < sys/time.h > #include < sys/types.h > #include < unistd.h > int select(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , struct timeval * timeout ); void FD_CLR(int fd , fd_set * se ... d_set * set ); void FD_SET(int fd , fd_set * set ); void FD_ZERO(fd_set * set ); #include < sys/select.h > int pselect(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , const struct timespec * timeout , const sigset_t * sigmask ) ... FD_ISSET () は集合にファイルディスクリプターがあるかどうか調べる; このマクロは select () が終了した後に使うと便利である。 nfds は 3 つの集合に含まれるファイルディスクリプターの最大値に 1 を足したものである。 timeout 引き数は、 select () がファイルデ ... ... 場合 */ #include < sys/time.h > #include < sys/types.h > #include < unistd.h > int select(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , struct timeval * timeout ); void FD_CLR(int fd , fd_set * se ... d_set * set ); void FD_SET(int fd , fd_set * set ); void FD_ZERO(fd_set * set ); #include < sys/select.h > int pselect(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , const struct timespec * timeout , const sigset_t * sigmask ) ... FD_ISSET () は集合にファイルディスクリプターがあるかどうか調べる; このマクロは select () が終了した後に使うと便利である。 nfds は 3 つの集合に含まれるファイルディスクリプターの最大値に 1 を足したものである。 timeout 引き数は、 select () がファイルデ ... ... 場合 */ #include < sys/time.h > #include < sys/types.h > #include < unistd.h > int select(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , struct timeval * timeout ); void FD_CLR(int fd , fd_set * se ... d_set * set ); void FD_SET(int fd , fd_set * set ); void FD_ZERO(fd_set * set ); #include < sys/select.h > int pselect(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , const struct timespec * timeout , const sigset_t * sigmask ) ... FD_ISSET () は集合にファイルディスクリプターがあるかどうか調べる; このマクロは select () が終了した後に使うと便利である。 nfds は 3 つの集合に含まれるファイルディスクリプターの最大値に 1 を足したものである。 timeout 引き数は、 select () がファイルデ ... ... 場合 */ #include < sys/time.h > #include < sys/types.h > #include < unistd.h > int select(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , struct timeval * timeout ); void FD_CLR(int fd , fd_set * se ... d_set * set ); void FD_SET(int fd , fd_set * set ); void FD_ZERO(fd_set * set ); #include < sys/select.h > int pselect(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , const struct timespec * timeout , const sigset_t * sigmask ) ... FD_ISSET () は集合にファイルディスクリプターがあるかどうか調べる; このマクロは select () が終了した後に使うと便利である。 nfds は 3 つの集合に含まれるファイルディスクリプターの最大値に 1 を足したものである。 timeout 引き数は、 select () がファイルデ ... ... 場合 */ #include < sys/time.h > #include < sys/types.h > #include < unistd.h > int select(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , struct timeval * timeout ); void FD_CLR(int fd , fd_set * se ... d_set * set ); void FD_SET(int fd , fd_set * set ); void FD_ZERO(fd_set * set ); #include < sys/select.h > int pselect(int nfds , fd_set * readfds , fd_set * writefds , fd_set * exceptfds , const struct timespec * timeout , const sigset_t * sigmask ) ... FD_ISSET () は集合にファイルディスクリプターがあるかどうか調べる; このマクロは select () が終了した後に使うと便利である。 nfds は 3 つの集合に含まれるファイルディスクリプターの最大値に 1 を足したものである。 timeout 引き数は、 select () がファイルデ ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。