- 论坛徽章:
- 0
|
下面的程序当我先输入中断件再输入字符串时,字符串并没有被读取,是不是当pselect返回时阻塞的信号被提交了??
- #include <sys/select.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <signal.h>
- #include <stdio.h>
- #define BUFFSIZE 1024
- void err_sys(const char *errmsg);
- int main(int argc, char **argv)
- {
- char buff[BUFFSIZE];
- sigset_t mask;
- fd_set rset;
- ssize_t n;
-
- FD_ZERO(&rset);
- FD_SET(STDIN_FILENO, &rset);
- if (sigemptyset(&mask) == -1)
- err_sys("sigemptyset error");
- else if (sigaddset(&mask, SIGINT) == -1)
- err_sys("sigaddset error");
-
- if (pselect(1, &rset, NULL, NULL, NULL, &mask) <= 0)
- err_sys("pselect error");
-
- if ((n = read(STDIN_FILENO, buff, BUFFSIZE)) == -1)
- err_sys("read error");
- else if (write(STDOUT_FILENO, buff, n) != n)
- err_sys("write error");
-
- exit(0);
- }
- void err_sys(const char *errmsg)
- {
- perror(errmsg);
-
- exit(1);
- }
复制代码
thank you!  |
|