首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

建自己的程序放到后台执行?解决思路

2013-01-25 
建自己的程序放到后台执行?找到一段实现代码,不过看的不太明白,请大牛解释一下下面代码是怎样建进程放入后

建自己的程序放到后台执行?
找到一段实现代码,不过看的不太明白,请大牛解释一下下面代码是怎样建进程放入后台执行的?

    def daemonize(self, stdin = '/dev/null', stdout = '/dev/null', stderr = '/dev/null'):
        try:
            pid = os.fork()
            if pid > 0:
                sys.exit(0)
        except OSError, e:
            sys.exit(4)

        os.chdir('/')
        os.umask(0)
        os.setsid()

        try:
            pid = os.fork()
            if pid > 0:
                sys.exit(0)
        except OSError, e:
            sys.exit(4)

        for f in sys.stdout, sys.stderr: f.flush()
        si = file(stdin, 'r')
        so = file(stdout, 'a+')
        se = file(stderr, 'a+', 0)
        os.dup2(si.fileno(), sys.stdin.fileno())
        os.dup2(so.fileno(), sys.stdout.fileno())
        os.dup2(se.fileno(), sys.stderr.fileno())

[解决办法]
试试python-daemon 1.5.5
http://pypi.python.org/pypi/python-daemon/
[解决办法]
1.py在国内人气不高,原因心照不提,因此这边也不会太多人在线
   国外就不同了,stackoverflow.com上面问py问题和解答的多呢
2.fork是*nix体系的,你也该明白国内windows是一统天下的,剩下的……
3.上面两点是相乘关系,结果就如此

不要抱怨CSDN或者别人怎样……因为找不到答案永远不是别人的问题,这个是应该从小孩就该明白的道理

我也不懂*nix,尝试从程序的理解给个自己的答案,不对你就继续寻找正确答案

Fork a child process. Return 0 in the child and the child’s process id in the parent.
就是新开了子进程,具体你再参考*nix的man,我说不上什么
而且程序似乎把输出都刷掉了——for f in sys.stdout, sys.stderr: f.flush()
这样的效果就相当于后台进行
[解决办法]
这个我就说不上了,区别是中间实施了setid()……

热点排行