我希望能够作为安全协议注销,但是存在一个主要问题,即如果用户反复点击键盘或鼠标,则会阻止注销。
这是我的退出代码:
NSTask *pmsetTask = [[NSTask alloc] init];
pmsetTask.launchPath = @"/usr/bin/pmset";
pmsetTask.arguments = @[@"sleepnow"];
[pmsetTask launch];
答案 0 :(得分:0)
我认为你的意思只是窗口会话?或者你也想要ssh会话?
你有各种选择。如果您是root用户,则可以使用killall loginwindow
。这将迫使所有人注销图形会话。同样,您可以killall -m sshd:
删除所有SSH会话。
作为普通用户,我可能会使用killall -m .
。这将杀死我被允许杀死的所有进程。当然,如果你以root身份运行它,我不知道它是否能够干净地恢复;我不推荐它。
对-m
killall
的所有{{1}}次来电都要小心,因为它们可以杀死超过你的意思(基于正则表达式)。但是,达到你所谈论的内容的最佳方式,特别是非常快速,并且没有为用户提供阻止它的机会,就会杀死管理会话的过程。
答案 1 :(得分:-3)
如果你只是做一个简单的动作并且点击它就不会被阻止:
[[(YOURAppDelegate *)[UIApplication sharedApplication].delegate navigationControllerOfRootViewController] popToRootViewControllerAnimated:true];
这假设您使用的是编程视图,并且已将navigationControllerOfRootViewController声明为navigationController,并在AppDelegate头文件中声明了此属性。
当你调用这个方法时,你的navigationControllerOfRootViewController会杀掉堆栈顶部的所有东西,并且你有一个总是被设置为navigationControllerOfRootViewController的rootViewController的Splash Screen,这样,当你弹出它时在堆栈的底部,它只显示你的启动画面,没有任何人可以做任何事情来阻止它。更好的是,将动画设置为" FALSE"这个流行音乐将会发生。