169it科技资讯
169it -->


当前位置:  技术问答>linux和unix

epoll_wait时产生的"Interrupted system call"

    来源: 互联网  发布时间:2017-01-12

问题描述如下:

一个Linux进程中有三个线程,分别为A,B,C。

A线程中有epoll的使用,来监听来自其他进程的socket连接。

B线程负责处理来自A线程的连接处理。

C线程是一个定时器Timer线程,这个线程利用signal进行计数,signal使用的具体代码是:



 signal(SIGALRM,timer_handle);



当运行进程后,先执行B,C线程,然后再执行A线程。A线程运行中,在运行到epoll_wait函数调用时产生了“Interrupted system call”错误。

测试发现:

1. 如果禁掉C线程(定时器Timer线程),一切就会运行正常。

2. 如果A线程不用epoll机制,选用select机制,也会产生“Interrupted system call"错误。

请问,在保证三个线程都使用的情况下,如何解决这个问题。谢谢。

我的思路:是否在timer线程中不使用signal机制,或者在A线程中(使用epoll或者select)做些处理避免这个错误。

|


这个我真不清楚,没读过源码。。 我去围观一下得了。
本页相关标签:

    
相关技术文章:
    ▪FreeBSD编辑/etc/rc.conf出现permission denied

     用户是root,输入/etc/rc.conf,出现:/etc/rc.conf:permission denied,刚学装,查了很多,还是不知道怎么回事?还有我用pkg_add -r xorg安装x11,总是会停在一个地方不动! | 你要编辑/etc/rc.conf  直接输入/etc/rc.conf怎么行呢?! 要用编辑工具打开 比如用vi 不过你要修改 最好先备份 #cp /etc/rc.conf /etc/rc.conf.bak #vi /etc/rc.conf ......


    ▪ubuntu有无类似redhat中setup这样的命令

     怎么查看有无安装tftp这个软件 | $ dpkg --get-selections | grep tftp | dpkg -L|grep tftp ......


    ▪ubuntu下配置tftp 安装程序 apt-get install netkit-inetd出现的问题

     上网找到的教程是这样的。 1、安装程序    sudo apt-get install xinetd    sudo apt-get install  netkit-inetd    sudo apt-get install tftp-hpa tftpd-hpa root@ubuntu:/home/test# apt-get install netkit-inetd Reading package lists... Done Building dependency tree        Reading state information... Done Package netkit-inetd is a virtual package provided by:   inetutils-inetd 2:1.8-3   openbsd-inetd 0.20080125-6ubuntu1 You should explicitly select one to install. E: Package 'netkit-inetd' has no installation candidate 请问这里是怎么回事? | ......


 
最新技术文章:
    ▪哪位大侠有《手把手教你构建自己的Linux系统》的光盘镜像发

     哪位大侠有《手把手教你构建自己的Linux系统》的光盘镜像发送到邮箱long7573@126.com | 这么大发到你邮箱?疯了 来这下载: down ......


    ▪linux c socket多线程编程

     我现在写一个服务端程序,要求可以链接多个客户端 有报警信息时要能发送报警信息,如果客户端有数据发来时,接收客户端的信息 现在运行起来有问题,当我打开第一个客户端时运行正常,当我断开这个链接,再重新打开一个客户端时,发送时就出现了问题,情况如下: 第一个链接 There is a new socket link coming 4! alarmtype = 50 data from socket 4, bytes = 1212 data from socket 4, bytes = 1212 Socket link 4 disconnect! 第二个链接 There is a new socket link coming 5! alarmtype = 50 send error : Bad file descriptor data from socket 5, bytes = 1212 data......


    ▪高手请进,帮我看看这个问题

     我下载一个valgrind3.6.1这个最新的内存泄露工具。 我想安装一个arm版本的,可以在手机上运行的。 我按照网上的步骤进程操作 // 编译valgrind-3.6.1 1.先将configure里原有的armv7*)改成armv7*|arm) 2.执行:./configure --host=arm-linux --prefix=valgrind_install; 3.make; 4.make install; 5.将valgrind_install/*拷贝到板上系统的/usr/local/ 6.valgrind --tool=memcheck --leak-check=full --error-limit=no --track-origins=yes 执行程序 可是当我执行到make的步骤时候,出现这些错误: root@ubuntu:/home/valgrind-3.6.1# make make  all-recursive make[1]: Entering directory......


 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2015,169IT.COM,站长邮箱:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号