【问题标题】:Python Unix/Windows Abstraction Layer for Signal Handling & User Management用于信号处理和用户管理的 Python Unix/Windows 抽象层
【发布时间】:2012-10-11 17:51:44
【问题描述】:

我想问一个问题,我广泛的网络搜索表明答案是否定的,但也许我忽略了一些东西......

在 Unix 和 Windows 信号处理(用于衍生的独立进程)和用户管理(获取用户和组条目、比较它们等)之上是否有 Python 抽象层?

是的,我知道 Windows 和 Unix 在这两个方面根本不同,但操作系统特定的方法确实可以完成类似的任务。因此,创建一个抽象层似乎不是一个坏主意。

我发现最接近我正在寻找的东西,至少对于子流程管理(并且在一定程度上“信号”这些子流程),是 python-multiprocessing,即http://docs.python.org/dev/library/multiprocessing.html - 它是我正在寻找的那种抽象,但它并不完全符合我的要求。

有没有朝这个方向发展的指针?

在 Windows 上使信号处理/用户管理看起来像 Unix 或反之亦然的模块也可以。

【问题讨论】:

  • “信号处理”包含在信号 (+ os.kill())、子进程模块中。您对“用户管理”有哪些用例(提供一个适用于某些操作系统的代码示例并描述它应该在另一个操作系统上做什么)?

标签: python windows unix user-management signal-handling


【解决方案1】:

Python 已经有一种信号处理的抽象,但在 Windows 上你仅限于:

signal() 只能使用 SIGABRT、SIGFPE、SIGILL、SIGINT、SIGSEGV 或 SIGTERM 调用。在任何其他情况下都会引发 ValueError。

用户管理是完全不同的动物: 如果您想在两个平台上进行类似的处理,则必须自己编写一个包装器:

对于 windows 查看 win32api (http://timgolden.me.uk/python/win32_how_do_i/check-a-users-credentials.html e.g.)

在 Linux/Windows 上也没有太多用于此目的,并且实际上取决于身份验证方式(本地 PAM、NIS 等)有 Debian 使用的 libuser 和衍生工具,但我自己从未使用过它。 (http://linuxsoft.cern.ch/cern/slc6X/x86_64/yum/updates/repoview/libuser-python.html)

【讨论】:

    猜你喜欢
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2012-04-14
    • 1970-01-01
    • 2012-04-30
    • 2016-03-31
    • 2014-08-29
    相关资源
    最近更新 更多