|
test.py: ------------------------------ import syssys.stdout.close() sys.stderr.close() raw_input() -----------------------------
运行test.py, 然后 $ ls -al /proc/PID/fd 你会发现0, 1, 2的fd都没有被关闭 只有通过类似 os.close(sys.stdout.fileno())的底层方法才能把fd关闭,但这样做 有点太粗暴而且繁琐,因为好像Python官方文档里说关闭一个file object对象,
fd会被释放(经测试:文件,Socket,Pipe在调用close方法后其fd的确会释放)。 求解~ --
-- 祝好 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表) 发言: [hidden email] 退订: [hidden email] (向此发空信即退!) 详情: http://groups-beta.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp |
|
也许是因为python是解释调用,process name 都是python,所以fd不能关吧?
2010/9/4 li zJay <[hidden email]>
-- 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表) 发言: [hidden email] 退订: [hidden email] (向此发空信即退!) 详情: http://groups-beta.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp |
|
In reply to this post by li zJay
这个,虽然你关闭了sys.stdout,但是python解释器自己还得用啊。
所以正确的关闭方法是,先关闭sys.stdout(其实赋值None就可以了),以防错误访问。 然后os.close。 在 2010年9月4日 下午10:39,li zJay <[hidden email]>写道:
-- 无能者无所求,饱食而遨游,泛若不系之舟 -- 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表) 发言: [hidden email] 退订: [hidden email] (向此发空信即退!) 详情: http://groups-beta.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp |
|
挖一下老帖,刚才碰到一个问题使用 std.stderr = None 的办法不能正常工作,找到这个解决方案:
''' 重定向 stdout/stderr 文件, 而不能只是简单地关闭它们(如果你的程序需要 stdout 或 stderr 写入内容的时候, 可能 会出现意想不到的问题). class NullDevice: def write(self, s): pass sys.stdin.close() sys.stdout = NullDevice() sys.stderr = NullDevice() ''' from: http://users.tpg.com.au/ludingji/downloads/PyStdLib.html On Sep 4 2010, 11:30 pm, Shell Xu <[hidden email]> wrote: > 这个,虽然你关闭了sys.stdout,但是python解释器自己还得用啊。 > 所以正确的关闭方法是,先关闭sys.stdout(其实赋值None就可以了),以防错误访问。 > 然后os.close。 > > 在 2010年9月4日 下午10:39,li zJay <[hidden email]>写道: > > > > > > > > > > > test.py: > > ------------------------------ > > import sys > > > sys.stdout.close() > > sys.stderr.close() > > raw_input() > > > ----------------------------- > > 运行test.py, 然后 > > $ ls -al /proc/PID/fd > > 你会发现0, 1, 2的fd都没有被关闭 > > > 只有通过类似 os.close(sys.stdout.fileno())的底层方法才能把fd关闭,但这样做 > > 有点太粗暴而且繁琐,因为好像Python官方文档里说关闭一个file object对象, > > fd会被释放(经测试:文件,Socket,Pipe在调用close方法后其fd的确会释放)。 > > > 求解~ > > > -- > > 祝好 > > > -- > > 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表) > > 发言: [hidden email] > > 退订: [hidden email] (向此发空信即退!) > > 详情:http://groups-beta.google.com/group/python-cn > > 严正: 理解列表! 智慧提问!http://wiki.woodpecker.org.cn/moin/AskForHelp > > -- > 无能者无所求,饱食而遨游,泛若不系之舟 -- 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表) 规则: http://code.google.com/p/cpyug/wiki/PythonCn 发言: [hidden email] 退订: [hidden email] (向此发空信即退!) 详情: http://code.google.com/p/cpyug/wiki/PythonCn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp 强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html |
|
stdout='/dev/null' , stderr='/dev/null'
在 2011年12月31日 下午3:45,Chunlin Zhang <[hidden email]>写道: 挖一下老帖,刚才碰到一个问题使用 std.stderr = None 的办法不能正常工作,找到这个解决方案: -- 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表) 规则: http://code.google.com/p/cpyug/wiki/PythonCn 发言: [hidden email] 退订: [hidden email] (向此发空信即退!) 详情: http://code.google.com/p/cpyug/wiki/PythonCn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp 强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html |
|
In reply to this post by chunlin zhang
恩,对,单纯none掉有的程序会抛出异常。 from miui 在 2011-12-31 上午7:45,"Chunlin Zhang" <[hidden email]>写道:
-- 挖一下老帖,刚才碰到一个问题使用 std.stderr = None 的办法不能正常工作,找到这个解决方案: 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表) 规则: http://code.google.com/p/cpyug/wiki/PythonCn 发言: [hidden email] 退订: [hidden email] (向此发空信即退!) 详情: http://code.google.com/p/cpyug/wiki/PythonCn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp 强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html |
| Powered by Nabble | See how NAML generates this page |
