あなたの答えはすべて私にとって適切に機能しましたが、私のニーズにより適した別の解決策を見つけました。コマンドラインツールからCocoaアプリを起動する必要がありました。これは、次の行で実現しました。
system("nohup /PATH/Arguments.app/Contents/MacOS/Arguments argument1 argument2 &");
nohupは、プロセスをそれ自体にアタッチできるUNIXサービスであるため、ターミナルウィンドウを閉じても、プロセスは存続します。
発生した次の問題は、Cocoaアプリ内から引数をキャプチャすることでした。AppDelegate.m
「 ifmain.m
が引数を受け取り、intを返す場合、どのように引数を取得しますか? 」
Appleのフレームワークとライブラリの中で、問題を正確に解決するものを見つけました。このライブラリはcrt_externs.hと呼ばれ、2つの有用な変数が含まれています。1つは引数の数を学習するためのもので、もう1つは引数自体を取得するためのものです。
extern char ***_NSGetArgv(void);
extern int *_NSGetArgc(void);
したがって、CocoaアプリのAppDelegate内で、引数をNSStringに解析するための次のコードを記述します。
char **argv = *_NSGetArgv();
NSString *argument1 = [NSString stringWithCString:argv[1] encoding:NSUTF8StringEncoding];
NSString *argument2 = [NSString stringWithCString:argv[2] encoding:NSUTF8StringEncoding];
ご覧のとおり、位置0にはパス自体が含まれているため、引数配列の位置1に直接スキップします。
argv[0] = '/PATH/Arguments.app/Contents/MacOS/Arguments'
argv[1] = 'argument1'
argv[2] = 'argument2'
お手数をおかけしますが、よろしくお願いいたします。皆さんからたくさんのことを学びました。また、この回答が他の誰かに役立つことを願っています:)
乾杯と幸せなコーディング!