2017-06-13 6 views
-2
void epoll_func(epoll_event event){ 
char str[BUFSIZE] = {'\0'}; 
int c =0; 

if(event.data.fd == connfd && EPOLLIN){ 
    while(true){ 
     c = read(connfd, str, BUFSIZE); 

     write(1, str, c); 
     if(c<BUFSIZE) 
      break; 
    } 
}else if(event.data.fd == 0 && EPOLLIN){ 
    while(true){ 
     c = read(0, str, BUFSIZE); 

     send(connfd, str, c, 0); 
     if(c<BUFSIZE) 
      break; 
    } 
} 

}So lösen Sie den Pty Master Slave lesen lesen. Master schreiben den Datenmaster auch lesen?

schreiben Daten an den Master, sondern auch die Daten lesen, ihre eigenen zu schreiben. Wie macht man?

vielen Dank.

+1

Willkommen bei Stackoverflow! Bitte nehmen Sie sich etwas Zeit, [die Hilfeseiten] (http://stackoverflow.com/help) zu lesen, besonders die Abschnitte mit dem Namen ["Welche Themen kann ich hier fragen?"] (Http://stackoverflow.com/help/) on-topic) und ["Welche Art von Fragen sollte ich vermeiden zu fragen?"] (http://stackoverflow.com/help/dont-ask). Nimm auch die [Tour] (http://stackoverflow.com/tour) und lies über [wie man gute Fragen stellt] (http://stackoverflow.com/help/how-to-ask). Zuletzt erfahren Sie, wie Sie ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) erstellen können. – Markus

+0

Sieht aus wie C. Warum Spamming der C++ - Tag? – Olaf

+0

'0 && EPOLLIN' kann viel einfacher ausgedrückt werden;) – tofro

Antwort

0

Sie vermasseln die Struktur epoll_event, die Sie erhalten, bestehend aus einem Ereignisfeld und einem union, der die Daten enthält. Ich nehme an, Sie möchten etwas wie das Folgende tun:

struct epoll_event e; 

uint32_t e_type = e.events; 
int fd = e.data.fd; 

if (fd == myfd) { 
    if (events && EPOLLIN)) { 
     /* my watched fd and can be read from */ 
    } 
    if (events && EPOLLOUT) { 
     /* my watched fd and can be written to */ 
    } 
} 
Verwandte Themen