2012-08-01 3 views
1

나는 자동으로 주어진 시간에 내 응용 프로그램을 열고 해당 응용 프로그램에서 특정 작업을 실행해야합니다. 그래서 Google에서 검색하여 launchd을 제안했습니다. 첫 번째 질문, 이것이 올바른 선택입니까?
는 I는 PLIST를 생성하고 난 그렇지 않으면 호출되지 않습니다, 컴퓨터를 다시 시작할 때 위치 ~/Library/LaunchAgents/fileName.plistlaunchd가 이벤트를 등록 할시기는 언제입니까?

<?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" 당신은 launchd에로 PLIS 파일을로드하는 데 사용할 필요라는 유틸리티가있다. 유형 : launchctl load plist_file.

당신이 당신의 응용 프로그램에서 뭔가를 예약 할 경우 - 한 가지 방법은 호출 될 것이다 "시스템"launchtl 유틸리티를 실행합니다. launchd에 대한 문서화되지 않은 API도 있지만 스케줄링에 사용할 수있는 방법을 찾지 못했습니다. 이 스케줄링 특성에 도달이 같은

launchd에, 시스템에 뭔가를 예약 할 수있는 가장 쉬운 방법이 될 것입니다.

+0

감사합니다! 개봉 중 응용 프로그램에서 특정 프로세스를 시작하는 방법을 알고 있습니까? – Aravindhan

+0

"개봉 중"의 의미를 분명히하십시오. 다른 방법으로 프로세스를 시작하는 방법이 많습니다. 가장 쉬운 방법은 "시스템"함수 호출입니다. –

+0

launchd 내 응용 프로그램을 여는 동안 내 응용 프로그램에서 특정 프로세스를 수행하려고합니다. 예를 들어 iPhoto를 열면 곧바로 내보내기가 시작됩니다. – Aravindhan

관련 문제