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

liunux c 程序 异常卡死

    来源: 互联网  发布时间:2015-10-24

    本文导语:  各位大侠:      我有一个linux下的c写的服务程序,主要充当其它系统接口的转发器,       其中有一段程序循环取'行'数据,      但很奇怪取到101行完后,程序被卡在'取行函数'前面, 再也不走了,      (我原来还...

各位大侠:
     我有一个linux下的c写的服务程序,主要充当其它系统接口的转发器, 
     其中有一段程序循环取'行'数据,
     但很奇怪取到101行完后,程序被卡在'取行函数'前面, 再也不走了,
     (我原来还以为是死循环)  ,用gdb看了一下, 根本就不再进入'取行函数'
     
     有哪个大侠碰到过类似的问题,给我提个醒, 谢谢了

|
既然你是转发器,没必要动态增加缓冲。
可以用队列,两个线程,一个收一个发,队列满了就不收,当然发送端就出错了。
不要无限制的增加缓冲。
你可以动态增加一些临时缓存,队列满的时候放在临时缓存里面,再来一个线程
负责把临时缓存的东西加到队列里面。


|
可以使用再分配的机制。可是我觉得既然是内部的程序,最好是先分配一个最大的内存。或者将信息的长度也传过来,用malloc分配。

|
像这样的取行函数都是要睡眠的, 没有取到行就死在那了.

|
有没有使用同步机制了?
文件是一种资源,会经历使用和释放的过程。会不会资源被其它使用者获取?

|
取行函数被阻塞啦,你是不是读取缓冲区是不是太大,没有读完,在等待。
你可以试试一个一个字符去读,或者select方式去读。

|
你构造一个文件至少有101行,试下。
然后再跟踪,自然就会明白

|
把code贴出来看看三。

|
还是贴代码好。一目了然。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • liunux安装问题
  • 怎么才能删除红旗liunux的登陆界面(高分求助)
  • liunux socket 接受数据有大小限制么?
  • liunux 问题


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3