作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我的程序正在使用 Linux 系统调用 setpriority()
来更改它创建的线程的优先级。它需要设置负优先级 (-10),但如文档中所述,以普通用户身份运行时会失败。
用户需要CAP_SYS_NICE
能力来设置他想要的优先级,但我不知道如何给用户这样的能力。
所以我的问题是:如何为 Linux 用户设置 CAP_SYS_NICE
功能?
最佳答案
有一个非常方便的实用程序可用于设置二进制文件的功能:setcap。这需要在您的应用程序二进制文件上以 root 身份运行,但一旦设置,就可以作为普通用户运行。示例:
$ sudo setcap 'cap_sys_nice=eip' <application>
您可以使用 getcap 确认应用程序的功能:
$ getcap <application>
<application> = cap_sys_nice+eip
我建议将这些功能集成到安装行中的 makefile 中,无论如何它通常以 root 身份运行。请注意,功能不能存储在 TAR 文件或任何衍生包格式中。如果您稍后打包您的应用程序,您将需要一个脚本(Debian 包的 postinst)来应用部署功能。
关于linux - 如何为 Linux 用户设置 CAP_SYS_NICE 能力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7635515/
我正在尝试编写一个守护进程,它将使用 setuid 位以 root 身份启动,然后快速恢复到运行该进程的用户。然而,守护进程需要保留将新线程设置为“实时”优先级的能力。我用来设置优先级的代码如下(一旦
我的程序正在使用 Linux 系统调用 setpriority() 来更改它创建的线程的优先级。它需要设置负优先级 (-10),但如文档中所述,以普通用户身份运行时会失败。 用户需要CAP_SYS_N
我是一名优秀的程序员,十分优秀!