sockets - SIGPIPE Error when using write() -


i getting sigpipe error when try write file descriptor returned when opened usb device. can read day it, cannot write it. below code:

#include <fcntl.h> #include <unistd.h> #include <iostream> #include <sys/socket.h> #include <string> #include <stdio.h> #include <sstream> #include <pthread.h> #include <string.h> #include <signal.h> #include <errno.h>  void* thread(void*); int fd = -1; std::string mastername; std::string slavename;  int main() {      char buf[1024];     fd = open("/dev/usbdevice", o_rdwr | o_noctty);      pthread_t thread;     pthread_create(&thread, null, thread, (void*)null);      while(1) {         int returnval = read(fd, buf, sizeof(buf));         if(returnval <= 0) {                  std::cout << "read() returned 0 bytes." << std::endl;                  break;         }         std::cout << "buffer data: " << bytechars << std::endl;     }     close(fd);     return 0; }  void* thread(void*) {     char buffer[2];     while(1) {         memset(buffer, 0, 2);         std::cout << "write device: " << std::endl;         std::cin >> buffer;         ssize_t ret = write(fd, buffer, 2);         if(ret == -1) {             std::cout << "errno: " << errno << std::endl;         }         else {                 std::cout << "successful write" << std::endl;         }     }     return null; } 

basically set thread able write file descriptor "fd" of returned "open()" function in beginning. error every time attempt write it. said before, can read day no problem.

side note have checked fd make sure writing correct 1 , am.

when researched sigpipe error, see every 1 says happens when fd gets closed on remote end. #1 how possible file descriptor closed? , #2 how still able read device on same file descriptor if closed?


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

css - Make div keyboard-scrollable in jQuery Mobile? -

ruby on rails - Seeing duplicate requests handled with Unicorn -