2012-08-01 98 views
1

我需要打开我的应用程序并在给定的时间自动运行该应用程序中的特定任务。所以我在谷歌搜索和想出launchd。第一个问题,这是正确的选择吗?
我创建了一个plist中,我留了个位置~/Library/LaunchAgents/fileName.plist当launchd将注册事件?

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>com.companyname.example</string> 
    <false/> 
    <key>RunAtLoad</key> 
    <true/> 
    <key>UserName</key> 
    <string>mac_1</string> 
    <key>Program</key> 
    <string>open</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>Argument_1</string> 
     <string>Argument_2</string> 
    </array> 
    <key>StartCalendarInterval</key> 
    <dict> 
     <key>Day</key> 
     <integer>1</integer> 
     <key>Hour</key> 
     <integer>10</integer> 
     <key>Minute</key> 
     <integer>41</integer> 
     <key>Month</key> 
     <integer>8</integer> 
     <key>Weekday</key> 
     <integer>3</integer> 

    </dict> 
     <key>KeepAlive</key> 
    <true/> 
</dict> 
</plist> 

这样做的问题是,它只是工作时,计算机将重新启动,否则也不会被调用。那么,我的第二个问题是launchd何时会注册这些事件呢?

回答

1

有一个实用工具称为“launchctl” 您需要使用它来将您的plis文件加载到launchd中。 类型:launchctl加载plist_file。

如果您想从应用程序中安排某些内容 - 一种方法是调用“system”来执行launchtl实用程序。还有一些未公开的API用于启动,但我找不到用于调度的方法。

launchd将是在系统上安排某些内容的最简单方法,因为它已达到调度属性。

+0

谢谢!我可以知道如何在打开时从我的应用程序启动特定的过程吗? – Aravindhan 2012-08-01 07:23:56

+0

请说明“开放时”的意思。 有许多方法可以从另一个启动进程,最简单的方法是“系统”函数调用。 – 2012-08-02 05:13:40

+0

虽然启动打开我的应用程序,我想从我的应用程序做一个特定的过程。例如,在打开iPhoto时,它立即开始导出。 – Aravindhan 2012-08-02 06:02:46