2017-06-13 5 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; 
    } 
} 

}Comment résoudre la lecture de l'esclave en écriture pty master. Maître écrire le maître de données va également lire?

écrire des données sur le maître, mais aussi lire les données à écrire leur propre. Comment faire?

merci beaucoup.

+1

Bienvenue dans Stackoverflow! Veuillez prendre le temps de lire [les pages d'aide] (http://stackoverflow.com/help), en particulier les sections intitulées ["Quels sujets puis-je poser à propos d'ici?"] (Http://stackoverflow.com/help/ sur le sujet) et ["Quels types de questions devrais-je éviter de poser?"] (http://stackoverflow.com/help/dont-ask). Aussi s'il vous plaît prendre le [tour] (http://stackoverflow.com/tour) et lire sur [Comment poser de bonnes questions] (http://stackoverflow.com/help/how-to-ask). Enfin, apprenez comment créer un [Exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve). – Markus

+0

Ressemble à C. Pourquoi spammer la balise C++? – Olaf

+0

'& & EPOLLIN' peut être exprimé beaucoup plus simple;) – tofro

Répondre

0

Vous êtes en train de bousiller la structure epoll_event que vous obtenez qui se compose d'un champ d'événement et un union contenant les données. Je suppose que vous voulez faire quelque chose comme ce qui suit:

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 */ 
    } 
}