0
私はLaunchDaemonを一度も書いたことがないので、私は単純ではありません。私の単純なものでさえ、実行されていないようです。LaunchDaemonはただちに終了しますが、直接実行すると実行され続けます
私はmacOS Sierra 10.12.5を使用しています。
EDIT:私のSYSTEM.LOGには、以下のいっぱいです:
Dec 6 00:02:47 Michaels-Mac-mini com.apple.xpc.launchd[1] (com.frescologic.hello): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
Dec 6 00:02:57 Michaels-Mac-mini com.apple.xpc.launchd[1] (com.frescologic.hello[1386]): Service could not initialize: 16F73: xpcproxy + 11769 [1505][34964CF1-9965-3B4D-ADC7-6FBC6669C56D]: 0x2
は、しかし、私はそれが稼働し続け、コマンドラインからこんにちは直接実行したとき。
私の設定ファイル:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.frescologic.hello</string>
<key>ProgramArguments</key>
<array>
<string>hello</string>
<string>world</string>
</array>
<key>KeepAlive</key>
<true/>
</dict>
マイデーモンのソース:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int
main(int argc, const char * argv[])
{
FILE *outFile;
if (argc != 2){
fprintf(stderr, "Usage:\n $ %s world\n", argv[ 0 ]);
exit(1);
}
outFile = fopen("/tmp/foo", "w");
if (outFile == NULL) exit(1);
while (1){
fprintf(outFile, "%s\n", argv[ 1 ]);
sleep(10);
}
return 0;
}
関連する権限:
$ ls -l /Library/LaunchDaemons/com.frescologic.hello.plist
[email protected] 1 root wheel 375 Dec 5 21:47 /Library/LaunchDaemons/com.frescologic.hello.plist
と
$ ls -l /usr/local/libexec
total 40
-rwxr-xr-x 1 root wheel 18240 Dec 5 21:45 hello
にlaunchctlは、それが実行していると主張:
$ sudo launchctl list | grep hello
Password:
- 78 com.frescologic.hello
をしかし、PSはしません:
$ ps -ef | grep hello
501 737 387 0 10:38PM ttys000 0:00.00 grep hello
と
$ ps -ax | grep hello
743 ttys000 0:00.00 grep hello
ログファイルが存在しません:
$ cd /tmp
$ ls
com.apple.launchd.JOJDWGHX78 com.apple.launchd.oUj51Uvj6v
あなたは私の唯一の希望です!