使用Cocoa计划任务?

使用Cocoa计划任务?,第1张

概述Cocoa(和Mac OS X)中安排程序运行的最佳方法是什么: >用户登录时 >在一天中的某些时间(例如:中午12:00). >在某些时间间隔(例如:每两个小时). 除了调度之外,如果用户删除应用程序,也应该很容易取消调度程序并且不会导致错误. 本质上,该程序是一个卫星命令行可执行文件,放在同一个.app包中的主应用程序文件旁边.该程序的目的是在用户的主目录中(在〜/ Library / App Cocoa(和Mac OS X)中安排程序运行的最佳方法是什么:

>用户登录时
>在一天中的某些时间(例如:中午12:00).
>在某些时间间隔(例如:每两个小时).

除了调度之外,如果用户删除应用程序,也应该很容易取消调度程序并且不会导致错误.

本质上,该程序是一个卫星命令行可执行文件,放在同一个.app包中的主应用程序文件旁边.该程序的目的是在用户的主目录中(在〜/ library / Application Support / MyApp中)进行一些后台数据更新.

crontab是一个很好的候选人吗? crontab的手册页说该功能已经被launchctl吸收,但我似乎无法找到如何安排特定时间来运行该实用程序.

谢谢.

解决方法 launchd是执行此 *** 作的正确方法(在Mac上不推荐使用crontab而支持launchd).您将创建一个pList文件,其中包含有关您的程序的信息(可执行文件名,参数等),其中一部分将是(警告在浏览器中输入并且未经测试):

<key>StartCalendarInterval</key><dictionary>  <key>Hour</key>  <integer>12</integer></dictionary><key>StartInterval</key><integer>7200</integer><key>limitLoadToSessionType</key><string>Aqua</string><key>RunAtLoad</key><true/>

> StartCalendarInterval应该在第12个小时(中午)的顶部运行您的程序.
> StartInterval应每2小时运行一次程序(= 7200秒)
> limitLoadToSessionType仅在Aqua会话开始时加载您的程序(用户实际登录到窗口服务器(因此,如果用户ssh进入,这将阻止加载)
> RunAtLoad告诉可执行文件在加载pList时运行.这与limitLoadToSessionType结合使用,应该在用户登录时启动可执行文件.

StartInterval和StartCalendarInterval可能是互斥的.如果是这种情况,您可以取出StartInterval键并将StartCalendarInterval内容更改为:

<key>StartCalendarInterval</key><array>  <dictionary>    <key>Hour</key>    <integer>0</integer>  </dictionary>  <dictionary>    <key>Hour</key>    <integer>2</integer>  </dictionary>  <dictionary>    <key>Hour</key>    <integer>4</integer>  </dictionary>  <dictionary>    <key>Hour</key>    <integer>6</integer>  </dictionary>  ...  <dictionary>    <key>Hour</key>    <integer>12</integer>  </dictionary>  ...  <dictionary>    <key>Hour</key>    <integer>22</integer>  </dictionary></array>

有关更多信息,请参阅man launchd.pList.

总结

以上是内存溢出为你收集整理的使用Cocoa计划任务?全部内容,希望文章能够帮你解决使用Cocoa计划任务?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存