2012-01-27 6 views
0

のためのCプログラムを作成します。 obex_testはobexファイル転送ライブラリです。 ここでは、リモートデバイスからブルートゥース経由でローカルデバイスにファイルを受け取りたいとします。 これは、obex_testは、ここで私はインタラクティブモードに似ている一つのコマンドを持って対話モード

のマニュアルページです。私のCプログラムをこのコマンドのような対話モードでどのように置くことができますか、私はこのコマンドも使用したいと思います。

私はpopen(command,"r")を使用しましたが、それは有用ではありません。ユーザーからの入力は受けません。 "w"モードを使用した場合、何が起こるか分かりません。私は直接>Unknown Commandのようなメッセージを受け取ります。我々が異なるオプションを与えるとき、このコマンドが与えるエラーです。だから、それは書き込みモードとして何かを取っている。

答えて

-1

システムコマンドを使用できます。詳細は、マニュアルページを参照してください。 システム( "obex_test -b 172.16.7.1 1234");

+0

実行後私は何かを入力する必要があります – user1089679

+0

@ user1089679はい、あなたは "対話モード"の意味はありませんか? –

+0

ここではシステムコールの使い方を聞いていません。私はここでインタラクティブモードを求めています。 – user1089679

1

2組のパイプを持つことができます(pipe(2)システムコールで作成)。 1つはプログラムからobex_teststdinに、もう1つはobex_teststdoutからプログラムに転送されます。そして、あなたはforkexecve ...しかし...(あなたのプログラムがその出力パイプがいっぱいになったときobex_test標準入力への書き込みと、それを阻止する上でブロックされている)、あなたはpoll(2)select(2)を呼び出す必要がありますデッドロックの

を用心うマニュアルページには、 "obex_testlibopenobexライブラリのテストアプリケーションです"という説明があります。だから、このlibopenobexライブラリ内の関数を直接呼び出さないでください。これはあなたのプログラムにリンクしますか?

+0

このパイプコンセプトの例は何ですか?私は初心者です – user1089679

+0

パイプやプロセスの詳細については、LinuxやUnixのプログラミングに関する標準的な本を読んでください。でも、あなたの場合は、 'libopenobex'ライブラリを使うことを強くお勧めします。 Unixプログラミングhttp://basepath.com/aup/とLinuxプログラミングhttp://www.advancedlinuxprogramming.com/ –

+0

oki私は図書館の方法で行くつもりです。私はopenobexライブラリを見つけて、このことを変えなければならない。 – user1089679

関連する問題