0

開発中のサービスをデバッグしています。これは基本的に、.app を開き、データを stdin に渡します。しかし、次のようなことは可能ではないようです:

open -a myapp.app < foo_in.txt

.app の stdin に何かを渡すことはできますか?

編集:申し訳ありませんが、これをSOに投稿して、もっと明確にするべきでした。私がやろうとしているのは、Python + py2app で作成されたアプリがあることです。ユーザーがファイルをドロップしたときと、それをサービスとして使用したときの両方を処理できるようにしたいと考えています。py2app にはargv_emulation. 最初の引数がパスかどうかを確認するだけです。

しかし、標準入力からの読み取りはまったく機能しません。上記の例のようにしても、パイプしても、データは読み取られません。stdin データを実際の python メイン スクリプトに渡すと、機能します。質問を言い換えると、py2app バンドルを使用して stdin から読み取ることは可能ですか?

4

5 に答える 5

1

それをサービスとして使うとはどういうことですか?

あなたが示す例は機能しません.openコマンドはLaunchServicesを呼び出してアプリケーションを起動します.LaunchServices APIにはstdinデータなどをアプリケーションに渡す場所がありません.

OS X サービス メニューに項目を追加する場合は、開発者向けの入門ドキュメントを参照してください。

于 2009-11-11T09:34:28.887 に答える
0

これは、Machポート、分散オブジェクト、またはOSが利用できるアプリケーション間通信の他のほとんどすべての方法を介して行う必要があります。

于 2009-11-11T08:33:10.793 に答える
0

openまったく新しいプロセスを作成します。したがって、ターミナルからアプリケーションにリダイレクトするために使用しないでください。あなたは試すことができます

./Foo.app/Contents/MacOS/Foo < Foo.txt

cat Foo.txt | ./Foo.app/Contents/MacOS/FooFoo を execurtbale として設定し、それがパスにあるかどうかに応じて、すでに非常に言及されています。あなたの場合、別のバイナリが含まれている可能性がある Ressources フォルダーの .app パッケージを確認します。 *.app パッケージはディレクトリです。コマンドライン引数を処理できません。

于 2009-11-11T09:40:15.687 に答える
0

良い、

open -a /Applications/myapp.app < foo_in.txt

myapp.app アプリケーションで foo_in.txt を開きます。アプリケーション、ビン、またはどこにあるのか、アプリケーションのフルパスが必要です...

アプリケーションが何をするかによって異なります。これはより適切かもしれません:

cat foo_in.txt | your_command_goes_here

これにより、foo_in.txt の内容が (cat を使用して) 読み取られ、stdin に (パイプを使用して) 渡されるため、コマンド/アプリケーションでそれに従うだけです。

于 2009-11-10T18:14:37.100 に答える
0

root として Finder を起動するには、以下を使用しません。

sudo open -a /System/Library/CoreServices/Finder.app

上記はopenroot として実行されopenますが、Finder は通常のユーザーとして実行されます。代わりに、次を使用します

sudo /システム/ライブラリ/CoreServices/Finder.app/Contents/MacOS/Finder

したがって、それに続いて、おそらく(私は本当に推測しています)次のものが必要です。

myapp.app/Contents/MacOS/myapp < foo_in.txt
于 2009-11-10T21:29:48.283 に答える