2012-08-01 96 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