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

一个daemon+多线程的程序的设计问题

    来源: 互联网  发布时间:2016-08-25

    本文导语:  问题描述:     我想在main()里面fork()一个新进程,然后用daemon(1,0)把它后台化,然后在这个守护子进程中调用pthread_create创建多个子线程用来并行执行任务。     1。这几个线程要从一个文件夹里按照一定顺序(比...

问题描述:
    我想在main()里面fork()一个新进程,然后用daemon(1,0)把它后台化,然后在这个守护子进程中调用pthread_create创建多个子线程用来并行执行任务。

    1。这几个线程要从一个文件夹里按照一定顺序(比如threads创建的先后顺序)各自取得若干文件去处理,那么这个工作队列(给线程处理的文件)的分配工作是不是应该在主进程里进行,然后子进程中的新线程们去按规则取就可以了??或者直接在新的子进程中做这个分配工作也可以?

    2。接下在父进程,也就是有控制终端的进程中控制子进程的结束,是应该调用kill(pid)吗?这样做会不会用什么问题?需不需要显式在子进程中调用pthread_exit()??怎么让子进程知道父进程让它停止,然后安全妥善地关掉它的子线程,然后退出??

    刚接触linux编程,一上来就接触多线程,后台,进程信号处理,有点混乱,请高手指教!

    

|
1,这个工作队列可以在父进程建立,也可以在子进程中建立;但最好是在子进程建立,因为在父进程中建立的话,子进程有同样的一份copy,但是在整个程序退出时,父进程需要做些额外的清理工作,这样不好;
2, 因为子进程中有多个线程在运行,所以不能直接用kill(pid),如果你直接这样子,子进程直接退出,那么那些工作线程的状态会怎么样?也会直接退出,这样可能有些资源得不到正确释放,有些处理可能不完全.我的建议是用一信号,比如,SIGUSR1,子进程的主线程等待这个信号(sigwait,pthread_sigmask)子进程的工作线程用pthread_sigmask屏掉SIGUSR1信号;在子进程收到SIGUSR1信号时,通过某种机制告诉其工作线程让工作线程退出(你可以设某些变量,比如,设一个 int to_stop;初值为0;工作进程可以检查这个变量来决定是否退出,如果要退出,先作一些处理工作,然后退出;也可以用pthread_cancel来结束工作线程,当然,工作线程要用pthread_cleanup_push注册一些清理函数)

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












  • 相关文章推荐
  • 使用daemon函数的问题。
  • 一个daemon的问题?
  • HAL daemon无法启动,求助 是不是apache的问题?
  • daemons的问题
  • 请问有关daemon.info的问题
  • Daemon问题
  • 关于daemon进程的问题
  • shell脚本中的daemon true和daemon false是什么意思啊
  • daemon 不太明白
  • daemon打起的C后台进程,怎么看标准输出?
  • 这么写 对吗?sh /oradata/daemon/ststicky.sh
  • daemon进程运行一段不确定时间后自动退出,何解?
  • 关于linux底下的daemon()函数怎么用,daemon(0,0)函数是什么意思?
  • 数字电视守护进程 GNOME DVB Daemon
  • 如何调试一个daemon进程?
  • 内核的daemon运行于什么上下文
  • Password Manager Daemon
  • Fastcgi-Daemon
  • Mini SNMP Daemon
  • Web服务器 Monkey HTTP Daemon
  • Fedora Core 2里怎么添加一个daemon?
  • 根据名称杀掉daemon进程的shell脚本
  • 解决MySQL Workbench gnome-keyring-daemon错误的方法分享
  • daemon 是属于 用户态编程 还是 内核态编程? 关于内核编程的书/资料介绍些好吗?
  • APUE中关于daemon进程的写法之疑问
  • daemon进程crash了怎么才能把错误信息记录下来?
  • 某daemon进程运行一段时间后接受到不知何地的终止信号导致进程退出,何解?


  • 站内导航:


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

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

    浙ICP备11055608号-3