Я работаю над программой клиент-сервер для отправки файлов (в linux). Клиент запрашивает файл с сервера, сервер отправляет его ему, а затем другой клиент может сделать это и т. Д.
Я хочу завершить программу, когда "exit" набрал в stdin.
В этом случае сервер завершит работу и завершит работу программы.
Моя проблема заключается в том, как справиться со случаем, когда сервер слушает сокет (с помощью функции listen ()) и вводит «exit». Я не знаю, как определить, что выход был набран, если мы в середине функции listen ().
listen(*mySocket, 3);
int t;
if ((t = accept(s,NULL,NULL)) < 0) {
return -1;
}
return t;
-------
int S_checkQuit(int mySocket){
fd_set rfds;
struct timeval tv;
tv.tv_sec=0;
tv.tv_usec =0;
FD_ZERO(&rfds);
FD_SET(mySocket, &rfds);
FD_SET(0, &rfds);
int n = mySocket + 1;
int rv = select(n, &rfds, NULL, NULL, &tv);
if (rv){
string cmd;
getline(cin, cmd);
if (cmd == "quit") {
return 1;
}
}
return 0;
}
Вот как я сейчас пополняю стандартный ввод в остальной части программы:
я хочу найти способ поймать "выход", набрав.