if(write(fd,&data,2)<0) { printf("fd is %dn",fd); printf("i2c: watchdog write error.n"); printf("Error :%sn",strerror(errno)); close(fd); exit(-1); } 咝绣e誤打印信息為 fd is 3 i2c: watchdog write error Error: bad file descriptor 在這段程序之前有ioctl設置,read等 都沒有出錯 到了write錯了,怎麽解決啊?
第一次select的是server的socket,accept一个连接的fd之后加入select,再select就出错了... 在select之前清空fdset,重新把可用的fd 放入fdset,以及select时maxfd+1等问题我都查过了,仍然找不到出错的原因....
昨天在windows 2003上跑的一段perl程序接收其它机器发送过来的数据 今天早上来一看,程序退出了,报的错误是:bad file descriptor,出错行是下面红色那一行 这个错误的根源在哪里?是thread还是超出socket最大数了? 麻烦有经验的大虾指点一下 while (my ($new_sock) = $sock->accept()) { my ($threads); $threads = threads->create('process_data', $new_sock) || die "Threads error $!"; close ($new_sock); }...
一个select + 多线程的架构, 一个manager 主线程分发accept到的fd给work子线程(依次生成启动),每个work子线程负载200个fd, manager和work之间采用pipe进行通信, 每次测试工具启动100 * 25 = 2500个连接(全部建立连接,发送5次4000字节的数据,然后进程sleep, 将fd连接挂住)的时候, 日志显示: manager能全部accept完,并且成功分发到各个线程,pipe显示发送成功 netstat显示2500个est 但是当到work10的时候,...
不知道为什么硬盘出现的错误! 执行: 203# rm mysql rm: mysql: bad file descriptor 请问如何解决?tks!
send 函数还没从gets(buff) 获得 输入之前就显示 recv 的bad file descriptor了. 其中客户 send(fd, buff, nbytes,0); 服务器 recv(connfd, buff, MAXSIZE,0); 出错为(numbytes=recv(connfd, buff, MAXSIZE,0))==-1 我理解是: send 到客户的buff 传到服务器的buff 再由recv读取出来. 到底是哪个环节出了问题呢?