質問

私は、仮想シリアルポートを作成するために、socatに関するを使用しています:

socat PTY,link=/dev/ttySV0,echo=1 PTY,link=/dev/ttySV1,echo=1

C ++で書かれた私のプログラムでは、私はttySV1ポートを開いて読み始めるます。

read関数は、しばらくの間ですが、私はポートにデータを送信するまでの問題は、読み取り機能がハングしていることです。あなたは、バッファにデータがない場合taht機能がハングアップし、ちょうど終了しないようにする方法を知っていますか?

編集:私は使用してポートにデータを送信ます:

echo [data] > /dev/ttySV0
役に立ちましたか?

解決

また、あなたが実行しているオペレーティングシステムに応じて、システムの読み取り機能を使用することができます。 詳細は読んで(3)男性の下にある必要があります。

あなたはfnctlを使用して設定さO_NONBLOCKする必要があります。これは、パイプ/ FIFOが現在空である場合、あなたの読み取りが失敗する原因とすべきです。私は、Linuxのmanページをチェックしますが、そのほとんどのPOSIXベースのシステムで同様の挙動である必要があります。

他のヒント

一つの方法は、読み込むべきデータがあるかどうかを確認するためにselect()メソッドを使用することです。 Googleで見つけたこののか、何か他のものを(私は「BSD検索しましたソケットは、右のパスへあなたを導く必要があります)」を選択します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top