如何在cocoa中执行shell脚本并关闭我的应用程序

时间:2011-06-15 17:04:12

标签: cocoa shell

我想在单击按钮时从我的cocoa app运行一个shell脚本。我可以轻松地使用system()调用来做到这一点,但这不是我所需要的。我需要应用程序在调用脚本时立即关闭,或者甚至在调用脚本之前关闭。基本上脚本应该花几秒钟运行所以我需要应用程序关闭那个时间。我需要这个的原因是因为我正在编写一个简单的应用程序让mac进入睡眠状态,但在此之前它通过shell脚本进行了大量的清理工作,我基本上不希望这个应用程序在我打开时打开系统从睡眠中恢复过来。

使用fork或其他类似的工作还是需要一些特殊的魔法才能做到这一点?

谢谢

2 个答案:

答案 0 :(得分:1)

如果你在Cocoa,你会想要使用NSTask。如果您的脚本需要管理员权限,则始终为STPrivilegedTask

答案 1 :(得分:0)

您可以使用popen()而不是system()。 init进程应该继承应用程序退出后运行的脚本的所有权。你也可以fork / exec,但popen会更简单,因为它的语义更接近于system()。