标准输入和标准输出,带C中的select()

时间:2017-11-01 16:29:19

标签: c sockets stdout stdin

我正在为大学做一个客户端 - 服务器项目。对于客户端,我必须使用select()系统调用。首先,我需要打印“>”然后等待,使用select(),如果socket准备好从服务器读取通知或stdin准备好从终端读取。 当我尝试打印“>”时,我遇到了这个问题:

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();

            }

        }
    }
}

1 个答案:

答案 0 :(得分:0)

fflush(stdout)

之前使用select()
read_fds = master;

fflush(stdout);

ret = select(fdmax + 1, &read_fds, NULL, NULL, NULL);