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

sleep的诡异问题

    来源: 互联网  发布时间:2016-06-17

    本文导语:  防止僵尸进程常用的双fork方法程序实现如下。 #include  #include  #include  #include  #include  #include  using namespace std; int main(void) { pid_t pid; if ((pid=fork()) a.txt & 然后打开a.txt看看是否运行正常。 | ...

防止僵尸进程常用的双fork方法程序实现如下。
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

int main(void)
{
pid_t pid;
if ((pid=fork()) a.txt &
然后打开a.txt看看是否运行正常。

|
后天运行的程序不能到终端显示,同时也不能进通道,调试的时候可以记录时间输出到文件里.

|
Daemon程序简介 
       Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。一般说Daemon程序在后台运行,是因为它没有控制终端,无法和前台的用户交互。Daemon程序一般都作为服务程序使用,等待客户端程序与它通信。我们也把运行的Daemon程序称作守护进程。
      比如,我们的网络服务程序,可以在完成创建套接口,绑定套接口,设置套接口为监听模式后,变成守护进程进入后台执行而不占用控制终端,这是网络服务程序的常用模式。UNIX下的网络服务程序,如Web  Server,FTP,Telnet一般都是由守护进程(Daemon)来实现的。守护进程不占用终端,在后台运行。UNIX的守护进程一般都命名为  *d 的形式,如httpd,telnetd等等。 
      守护进程一旦脱离了终端,退出就成了问题。使用 ps axj 查出进程ID然后 kill ID 之。

Daemon程序编写规则
   编写Daemon程序有一些基本的规则,以避免不必要的麻烦。
   1、首先是程序运行后调用fork,并让父进程退出。子进程获得一个新的进程ID,但继承了父进程的进程组ID。
   2、调用setsid创建一个新的session,使自己成为新session和新进程组的leader,并使进程没有控制终端(tty)。
   3、改变当前工作目录至根目录,以免影响可加载文件系统。或者也可以改变到某些特定的目录。
   4、设置文件创建mask为0,避免创建文件时权限的影响。
   5、关闭不需要的打开文件描述符。因为Daemon程序在后台执行,不需要于终端交互,通常就关闭STDIN、STDOUT和STDERR。其它根据实际情况处理。另一个问题是Daemon程序不能和终端交互,也就无法使用printf方法输出信息了。

    另一个问题是Daemon程序不能和终端交互,也就无法使用printf方法输出信息了。我们可以使用syslog机制来实现信息的输出,方便程序的调试。

下面是一个daemon程序的例子:(daemontest.c) 

view plaincopy to clipboardprint?
#include   
#include   
#include   
#include   
#include   
#include   
#include   
int daemon_init(void)   
{   
    pid_t pid;   
  if((pid = fork()) & a &

    
 
 

您可能感兴趣的文章:

  • man sleep的问题
  • 请问一下sleep_on_timeout函数的返回直问题(在线等)
  • 浙ICP备11055608号-3 iis7站长之家
  • 小问题:在线程中调用sleep()使其睡眠的时候,此线程是否释放所占的资源?
  • 关于sleep问题
  • 关于read,write,sleep的问题。
  • 【linux文件操作的怪问题】写完文件关闭后立即打开,读出来的是乱码。sleep(1)读出来后正常
  • 请教高手pxa3xx sleep/resume回来后hang问题
  • 关于interruptible_sleep_on(&(tsdev.wq)); wake_up_interruptible(&(tsdev.wq));的问题,谢谢!
  • 不是新手的新问题:sendmail[222]:My unqualified host name unknown:sleep for retry
  • 在线程中sleep函数休眠的问题
  • QT:有关sleep的问题,为何在windows下编译运行没问题,而在linux下连编译都不过那?
  • sleep nanosleep select延时问题
  • 请教一下关于linux下sleep的问题
  • 请教下linux中关于sleep()函数的问题
  • 线程sleep的问题
  • 信号处理中sleep函数失效的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.util.concurrent枚举timeunit的类成员方法: sleep定义及介绍
  • 请问大侠们,线程中sleep到底行不行?? 希望是线程sleep的终结帖!!
  • java命名空间java.lang类thread的类成员方法: sleep定义及介绍
  • sleep在哪个头文件啊
  • sleep是进程域还是线程域的?
  • crond和sleep比较?
  • linux的sleep函数有什么用
  • Linux sleep() 进程与线程
  • 有什么系统调用的sleep是以毫秒作为精度的?
  • sleep() 函数的原理是什么
  • JAVA里有没有类似SLEEP的函数?
  • linux下的SLEEP N(SECONDS)是什么用的?
  • 送分! UNIX C编程。 如何休眠5秒钟? 类似WINDOWS下的Sleep(5000).
  • windows下死循环需要加sleep,否则CPU爆满, linux下呢?
  • 为什么要将一个进种sleep掉
  • sleep
  • 求教sleep(1000),着急!着急!着急!
  • 请教sleep和pthread_delay_np:阻塞线程/阻塞进程?
  • java 线程,对当前线程(非主线程)调用sleep,为什么主线程(窗口)也没反应了
  • UNIX下用 sleep 时,进程不回响应,kill 都不行,都没有别的办法?
  • LINUX下访问oracle时sleeping的线程过多,达到300多个,造成系统拥堵!


  • 站内导航:


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

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

    浙ICP备11055608号-3