2017-03-06 3 views
0

この1つはドーズであり、オンラインで回答を見つけるにはあまりにも特殊です。PythonとC++が同時に読み書き可能なファイルで実行されます

私はC++でファイルに書き込み、Pythonでそのファイルを読み込んでロボットを移動します。またはしようとしています。

同時に両​​方のプログラムを実行しようとすると、C++が最初に実行されてからPythonが実行されます。

./ColorFollow & python fileToHex.py

これは私がコマンドの順序を切り替える場合でも発生:

は、ここで私が使用するコマンドです。 異なるターミナルで実行しても(同じものですが、すべてのベースをカバーしています)。

「無限ループ」でPythonとC++の両方のコードを読み書きするので、これらの2つは「停止」と言うまで実行する必要があります。

コードは正常に動作します。 Pythonスクリプトが最終的に実行されると、ロボットは意図したとおりに動く。コードが同時に実行されないことだけです。

これを行う方法はありますか、これは不可能ですか?

さらに詳しい情報が必要な場合は、ご存知のとおりですが、コードはかなり期待しています。

+0

'&'を使用すると、bashセッションをリリースし、Pythonスクリプトの出力のみを取得します。だから、私は停止フラグを持つサービスファイルを作ることを提案する。または、あるプロセスを他のプロセスから停止する。 – ETech

+0

ファイルの代わりに、パイプの使用を検討してください。 – user4581301

+0

あなたは './ColorFollow | python fileToHex.py'? –

答えて

0

Linuxを使用している場合、&はbashセッションをリリースします。この場合、CollorFlowとfileToXex.pyは異なるbashセッションで実行されます。
同時に、構成./ColorFollow | python fileToHex.pyが面白そうに見えるので、ColorFollowのstdoutをfileToHex.py stdinにリダイレクトします。終了時にコード文字列を印刷してから、fileToHex.pyで読み取り、終了することでスクリプトを同期させることができます。
/var/run/ColorFollow.flagのような空のファイルを作成し、プロセスが終了すると1を書きます。パイプではありません - 最初にどのプロセスが始まるかは気にしません。したがって、ColorFollowの次のループステップでファイル内に1がある場合は、それを削除して終了します(fileToHexがすでに終了していることを意味します)。同じです - fileToHex - フラグファイルをチェックし、フラグファイルを削除した後、存在すれば終了します。

関連する問題