易截截图软件、单文件、免安装、纯绿色、仅160KB

[转] 使用Python写Linux的守护进程(daemon)

A simple unix/linux daemon in Python
http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/
by Sander Marechal
I've
written a simple Python class for creating daemons on unix/linux
systems. It was pieced together for various other examples, mostly
corrections to various Python Cookbook
articles and a couple of examples posted to the Python mailing lists.
It has support for a pidfile to keep track of the process. I hope it's
useful to someone.
Below is the Daemon class. To use it, simply subclass it and implement the run() method.
import sys, os, time, atexit
from signal import SIGTERM
class Daemon:
"""
A generic daemon class.

Usage: subclass the Daemon class and override the run() method
"""
def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):
self.stdin = stdin
self.stdout = stdout
self.stderr = stderr
self.pidfile = pidfile

def daemonize(self):
"""
do the UNIX double-fork magic, see Stevens' "Advanced
Programming in the UNIX Environment" for details (ISBN 0201563177)
http://www.erlenstar.demon.co.uk/unix/faq_2.html#SEC16
"""
try:
pid = os.fork()
if pid > 0:
# exit first parent
sys.exit(0)
except OSError, e:
sys.stderr.write("fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))
sys.exit(1)

# decouple from parent environment
os.chdir("/")
os.setsid()
os.umask(0)

# do second fork
try:
pid = os.fork()
if pid > 0:
# exit from second parent
sys.exit(0)
except OSError, e:
sys.stderr.write("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
sys.exit(1)

# redirect standard file descriptors
sys.stdout.flush()
sys.stderr.flush()
si = file(self.stdin, 'r')
so = file(self.stdout, 'a+')
se = file(self.stderr, 'a+', 0)
os.dup2(si.fileno(), sy


相关文档:

Linux如何走出桌面困境?

       近日,在LinuxCON 2009大会上,桌面 Linux 又成为业界关注的焦点之一。各种不同的声音,嗓门都很大。在这纷纷嚷嚷的氛围中, Linux 如何走出桌面困境?
       纵观全局,普及桌面 Linux 的最大障碍之一是系统安装的操作困难性。预装 Windows 已成大 ......

linux软中断机制


 
 
linux软中断机制
 
 
中断服务程序往往都是在CPU关中断的条件下执行的,以避免中断嵌套而使控制复杂化。但是CPU关中断的时间不能太长,否则容易丢失中断信号。为此, Linux将中断服务程序一分为二,各称作“Top Half”和“Bottom Half”。前者通常对时间要求较为严格, ......

关于 s3c2416 hspi spi linux 驱动


        最近在做samsung
s3c2416
在linux下的spi驱动程序,测试了下samsung发布的spi的内核源代码,无论是采用dma或者非dma模式都无法工作。阅读该驱动代码,发现
这码应该是一个未完成的版本,存在很多的bug。于是在这个版本的基础上进行修改,重写一个可用的、支持全双工的通讯 ......

Linux网络驱动程序编写(三)

 2.4 常用的系统支持
  2.4.1 内存申请和释放
  include/linux/kernel.h里声明了kmalloc()和kfree()。用于在内核模式下申请和释放内存。
  void *kmalloc(unsigned int len,int priority);
  void kfree(void *__ptr);
  与用户模式下的malloc()不同,kmalloc()申 ......

Linux网络驱动程序编写(四)

 三.编写Linux网络驱动程序中需要注意的问题
  3.1 中断共享
  Linux系统运行几个设备共享同一个中断。需要共享的话,在申请的时候指明共享方式。系统提供的request_irq()调用的定义:
    int request_irq(unsigned int irq,
          void (*handler)(int irq, void *dev_id, struct pt_regs *re ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号