在 C 中使用 select() 的标准输入和标准输出
Standard input and standard output with select() in C
我正在为大学做一个客户端-服务器项目。对于客户端,我必须使用 select() 系统调用。首先,我需要打印“>”,然后使用 select() 等待,如果套接字已准备好从服务器读取通知或标准输入已准备好从终端读取。
当我尝试打印“>”时,我遇到了这个问题:
input(socket or stdin)
>
但我想要:
>
input(socket or stdin).
有没有人可以帮助我??
这是我的部分代码:
...
...
FD_SET(sd, &master);
FD_SET(std_in, &master);
fdmax = sd;
for(;;){
printf(">");
read_fds = master;
ret = select(fdmax+1, &read_fds,NULL, NULL,NULL);
check_error_rs(ret,0);
for(cont = fdmax + 1; cont >= 0; cont--){
if(FD_ISSET(cont, &read_fds)){
if(cont == std_in){
scanf("%s",send_buf);
if(strcmp(send_buf,"!help") == 0){
.....
}
if(strcmp(send_buf,"!who") == 0){
.....
}
}
if(cont == sd){
check_notify();
}
}
}
}
在 select()
之前使用 fflush(stdout)
read_fds = master;
fflush(stdout);
ret = select(fdmax + 1, &read_fds, NULL, NULL, NULL);
我正在为大学做一个客户端-服务器项目。对于客户端,我必须使用 select() 系统调用。首先,我需要打印“>”,然后使用 select() 等待,如果套接字已准备好从服务器读取通知或标准输入已准备好从终端读取。 当我尝试打印“>”时,我遇到了这个问题:
input(socket or stdin)
>
但我想要:
>
input(socket or stdin).
有没有人可以帮助我?? 这是我的部分代码:
...
...
FD_SET(sd, &master);
FD_SET(std_in, &master);
fdmax = sd;
for(;;){
printf(">");
read_fds = master;
ret = select(fdmax+1, &read_fds,NULL, NULL,NULL);
check_error_rs(ret,0);
for(cont = fdmax + 1; cont >= 0; cont--){
if(FD_ISSET(cont, &read_fds)){
if(cont == std_in){
scanf("%s",send_buf);
if(strcmp(send_buf,"!help") == 0){
.....
}
if(strcmp(send_buf,"!who") == 0){
.....
}
}
if(cont == sd){
check_notify();
}
}
}
}
在 select()
fflush(stdout)
read_fds = master;
fflush(stdout);
ret = select(fdmax + 1, &read_fds, NULL, NULL, NULL);