2011-01-11 6 views
1

Hallo Ich möchte FDs, die von libssh Verbindung apis sind, überwachen. Sie möchten aber auch STDIN überwachen und die Befehle von STDIN analysieren.Poll STDIN und andere Fds

Kann ich dies mithilfe von Poll in C++ tun.

Antwort

2

Nicht in Standard C++, die keine FDs oder poll() hat. Aber auf Unix (POSIX), stdin ist eine gültige FD mit Wert 0.

2

Ich habe nicht libssh vor dem Bust verwendet ein Lesen der Feature-Liste sagt mir, es hat volle Unterstützung der Umfrage. Sie sollten also in der Lage sein, Ihre SSH-Verbindungen und den STDIN-Dateideskriptor direkt zu überwachen().

z.B. stdin für die Eingabe etwas wie

int timeout = 100; // wait 100ms 
struct pollfd fd; 
fd.fd = STDIN; 
fd.events = POLLIN; 
fd.revents = 0; 
int ret = poll(&fd, 1, timeout); 
if (ret > 0 && (fd.revents & POLLIN != 0)) { 
    // got some data 
} else { 
    // check for error 
} 

Das erste Argument zu beantworten ist ein Array von "struct pollfd". Ich habe nur eine Länge von 1 angegeben (zweites Argument). Aber Sie können ein Array für so viele, wie Sie benötigen, mit den anderen Dateideskriptoren von libssh zuweisen, die in dem Array enthalten sind, das Sie überwachen möchten.