gpt4 book ai didi

c - Lubuntu 上的程序优先级

转载 作者:行者123 更新时间:2023-11-30 17:15:47 26 4
gpt4 key购买 nike

给定运行 lubuntu 的单处理器虚拟机,我想知道是否可以绑定(bind)处理器,以便其他程序无法运行任何指令。
例如,如果程序 A 和程序 B 几乎同时运行,是否可以将程序 A(在其源代码中使用 setpriority() 函数)的优先级设置为在程序 B 之前运行,然后将处理器使程序B无法执行?

最佳答案

您可以使用 SIGSTOP 和 pid 值 -1 调用 kill 来停止您可以停止的每个进程(即有权停止) 停止除 init 和调用进程之外的进程,如果您是 root,则应停止除 init 和调用 kill 的进程之外的所有进程。

您需要使用脚本语言而不是kill二进制文件,因为kill二进制文件将在发送信号后退出,并且不会给您运行kill二进制文件的shell提供帮助,从而阻止您启动应用程序.

例如,在 ruby 中,你可以这样做,

#Broadcast the STOP signal
Process.kill(:STOP, -1)
#Run your process with the playground having been cleared
system('the_high_priority_app')
#Resume the stopped processes
Process.kill(:CONT, -1)

不过,如果你有许多进程通过在它们之间发送 SIGSTOP 和 SIGCONT 信号来执行一些 IPC,那么上面的代码就不太安全了——你可能会向已被停止的进程发送 SIGCONT其他流程。您可以获得在广播 SIGSTOP 信号时停止的进程列表,并在广播 SIGCONT 信号时跳过这些进程,但 sigstop 进程集理论上可能会在扫描它们和广播 SIGSTOP 信号之间发生变化。

关于c - Lubuntu 上的程序优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29872508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com