我在catwm(一个简约的窗口管理器)的源代码中发现了以下函数:
void spawn(const Arg arg) {
if(fork() == 0) {
if(fork() == 0) {
if(dis)
close(ConnectionNumber(dis));
setsid();
execvp((char*)arg.com[0],(char**)arg.com);
}
exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么不简单地
void spawn(const Arg arg) {
if(fork() == 0) {
if(dis)
close(ConnectionNumber(dis));
setsid();
execvp((char*)arg.com[0],(char**)arg.com);
}
}
Run Code Online (Sandbox Code Playgroud)
?在这里使用 double 有什么好处吗fork()
?
我对“暂停然后休眠”作为盖子关闭操作有疑问。
因此,我希望系统关闭并锁定屏幕,并在盖子关闭后等待 10 分钟(但不暂停),而不是暂停,然后(如果盖子保持关闭状态)进入休眠状态。
可以使用 systemd 来做到这一点吗?