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

stderr的问题

    来源: 互联网  发布时间:2015-08-15

    本文导语:  一个daemon fork出的进程调用fprintf(stderr,...),第一次调用这个函数返回-1,错误愿因是没有tty,但以后的调用都只返回0,调用数次后进程就block住了。为什么会block住?是因为buffer满了吗? 如果进程忽略了SIGHUP,则终端...

一个daemon fork出的进程调用fprintf(stderr,...),第一次调用这个函数返回-1,错误愿因是没有tty,但以后的调用都只返回0,调用数次后进程就block住了。为什么会block住?是因为buffer满了吗?
如果进程忽略了SIGHUP,则终端关闭后进程并不退出。此时多次调用fprintf(stderr,....)进程也不会发生block,为什么?
如果关闭stderr后,再申请的文件描述符是否会和stderr的相同?
谢谢!

|
如果关闭stderr后,再申请的文件描述符是否会和stderr的相同?
===========
stderr是流,不是描述字。标准出错的描述字默认是3,如果你close(3)然后再申请一个描述字,则会返回当前可用描述字的最小值,如果这个最小值是3,那么新申请到的就是3。但这个3并不表示标准出错。

|
我在子进程中,使用fprintf(stderr,...)没有碰到类似问题啊。

对于子进程不退出的问题,可以添加如下语句来解决

if (fork() == 0){
  /* 子进程 todo... */
}

while (waitpid(-1, NULL, WNOHANG) > 0)
    ;

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












  • 相关文章推荐
  • 关于 stderr ?
  • 菜鸟问,打印到stderr的信息给谁看的?
  • linux 如何只重定向stderr,而不重定向stdout
  • 重定向stdout stderr到文件,文件为空
  • 求解释stdin,stdout,stderr
  • php标准输入与输出(STDIN、STDOUT、STDERR)
  • 解析c中stdout与stderr容易忽视的一些细节


  • 站内导航:


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

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

    浙ICP备11055608号-3