2011-01-14 10 views
3

私はこれらすべてで新しいです。私は無知のために私を失礼にします。Terminalの "./"と "open"の違いは何ですか?そして、どのようにしてUnixの実行ファイルをXCodeから実行できるのですか?

私は実行可能ファイルを持っています。 open programname --args引数を使用してターミナルを実行し、リソースファイルが見つかりませんでした(これは渡された引数です)。

私は書いてみました:./programname引数とできます。

最初に、私はこれらの2つの方法の違いを知りたいのですが、最初のものが動作しないのはなぜですか、2番目の方法は動作します。

私が今問題にしているのは、私がXCodeで行うことができないということです。実行可能ファイルが実行されているときは、リソースファイルを見つけることができません。 cmd + iで実行可能な引数を実行可能ファイルに渡し、リソースファイルを引数として追加しました。

答えて

2

openは、Finderでのものをダブルクリックするのと全く同じです。したがって、UNIXの実行可能ファイルでそれを使用すると、実行可能ファイルは起動しますが、現在の作業ディレクトリは実行可能ファイルが存在する場所にはなく、必ずしも有用であるとは限りません。ただし、.docファイルやその他のファイルタイプを開くときや、Finderでディレクトリを開くとき、ファインダでURLを開くときなどにも使用できます。

./nameで実行可能ファイルを起動すると、ものを実行するための通常のUNIXの方法です。現在の作業ディレクトリは、入力するときのどこにでもあります。したがって、実行可能ファイルと同じディレクトリになります(たとえば、ディレクトリを下り、../nameを使用して実行可能ファイルを起動するなどして、ディスク上の別の場所から起動しない限り)。

実行したいのは、実行ファイルへのパスを取得するためのコードを書いて、それに関連して指定されたファイルを探しますか?あなたはどの言語で作業しているのかを言わないで、面倒なことに、POSIX仕様にはないので、OSによって異なります。

C(C++、Objective-Cなど)を呼び出すことができる場合は、NSGetExecutablePath(アンダースコアを置くというGoogleの願いを無視してください。例えばthis siteを参照してください)は、 。 Objective-Cの場合は、NSStringに自動的にパスを追加する方法があります。

+0

ご連絡ありがとうございます。私はC++で働いています。私は "新しいターゲット.."を作成しました。私はmakefileフォルダを設定しました。私は新しいターゲットをアクティブにしました。そして今私は自分のプログラムを実行するために "ビルドして実行"したいと思っています。私はプロジェクトの設定からそれを設定できますか?私はどこにNSGetExecutablePathを置くことができないのですか?私は申し訳ありません。 – user575988

1

「オープン」あなたはファインダーを経由して、特定のアプリケーションに移動していたし、それをダブルクリックしたかのように正確に動作するコマンド..ですあなたの潜在的な答えをいただき、ありがとうございます。

./は、chmodで実行可能とマークされた特定のファイルを実行する方法です。

たとえば、Mac OS Xアプリケーションをコマンドラインから実行するには、「open /Applications/MyApp.app/」と入力します。しかし、あなたが./MyApp.app/(あなたが/ Applicationsディレクトリにいると仮定した場合)は動作しません。

端末に「man open」と入力すると、詳細を読むことができます。