次のコードで、MAC OS X 10.7 (ライオン) に network_change イベントを登録しようとしました。
#define kNotifySCNetworkChange "com.apple.system.config.network_change"
void init()
{
status = notify_register_check(kNotifySCNetworkChange, &token);
if (status != NOTIFY_STATUS_OK)
{
cout << "Event Registration failed" <<endl;
}
cout << "Event Registration Success" << endl;
}
.....
このコードをサンプル プログラムで使用すると、正常に登録されました。アプリケーションでこれを使用すると、notify_register_check() 関数はステータス1000000 (NOTIFY_STATUS_FAILED) を返しました。さらに、返される errno は 0 です。
注: 私のアプリケーションは Leopard と Snow Leopard で問題なく動作しています (登録成功)。
このステータスをグーグルで検索しましたが、関連する情報が見つかりませんでした。この NOTIFY_STATUS_FAILED が返されるシナリオを誰か教えてもらえますか?
最近気付いたもう 1 つのこと:アプリケーションでfork()システム コールを使用しています。親プロセスに登録しようとしたら、イベント登録に成功しました。ただし、子プロセスでイベント登録に失敗しました。なぜ子プロセスで失敗したのですか??? 何か案が!!!