問題タブ [qprocess]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2165 参照

multithreading - QProcess、QEventLoop - 並列処理に使用

QEventLoop (QProcess?) を使用して、Qt で同じ関数への複数の呼び出しを並列化できるかどうか疑問に思います。QtConcurrent または QThread との正確な違いは何ですか? より正確には、プロセスとイベント ループとは何ですか? QCoreApplication は main() メソッドでできるだけ早く exec() する必要があると読んだので、なぜそれがメイン スレッドと異なるのか疑問に思います。

Qt を使用したプロセスとスレッドへの効率的な参照として指摘できますか? 私は公式ドキュメントを読みましたが、それらのことは不明のままです。

ありがとうございます。

0 投票する
1 に答える
12010 参照

qt - textBrowser での QProcess 出力のリアルタイム表示

私はqt開発の初心者で、QProcessの出力をリアルタイムでtextBrowserに転送したいと考えています。簡単な echo コマンドを実行することから始めましたが、プログラムの出力が表示されません。私は何を間違っていますか????

PS私はLinuxマシンを使用しています。

編集: textBrowser で出力を取得できません。

Qprocess パラメーターを変更し、waitForStarted() と waitForReadyRead() の両方を試して、プロセスが時間内に開始され、結果が利用可能になるようにしました。

範囲外になったときにプロセスが終了しないように、waitForFinished() を追加しました。

0 投票する
0 に答える
575 参照

linux - SIGBUSエラーを回避するためにQtを使用して利用可能なファイルハンドルをチェックする

マルチスレッド Qt コンソール アプリケーションで QProcess を使用しています。実行時に約 250 の接続スレッドを取得しました。各接続スレッドは DB 接続を使用し、QProcess オブジェクトを使用してシェル コマンドを実行します。

My ulimit -nshow 1024 (=パイプまたはファイルハンドルが利用可能)。ここで制限に達していると思います。変更すると問題が延期されるだけです。これには (SIGBUS クラッシュの代わりに) 適切なエラー処理が必要です。QProcess を開始する前に、使用可能なパイプ番号を確認するにはどうすればよいですか?

ヒントをありがとうございました。

スパイキー

Qtソースのqprocess_unix.cppから引用されたコード:

コードは次の行でクラッシュしますFD_SET(childStartedPipe[0], &fds);

...

これは、QProcess を呼び出す関数です。

0 投票する
1 に答える
3519 参照

c++ - Qt:QProcessでWindowsコンソールを起動できません

QProcessは、単に黒いコンソールウィンドウを表示しません。

これは私が使用するコードです:

cmd.exeをcalc.exeに置き換えると、電卓が正常に起動します。

0 投票する
2 に答える
2918 参照

qt - Qt の QProcess は、プロセスが終了した後もプロセスが実行中であると考えています。

QProcess を使用して libs3 から s3 プログラムを実行しています

ただし、このコードを実行するたびに、waitForFinished メソッドは 30 秒間待機し、次の出力を取得します。

waitForFinished がタイムアウトする前に、Activity Monitor.app で S3 プロセスが明らかに実行されていないことがわかります。どうしたの?

0 投票する
1 に答える
2534 参照

c++ - パスに空白がある場合、Qt アプリと同じディレクトリから実行可能ファイルを起動します

Qt アプリでボタンを押したときに実行可能ファイルを起動したいと考えています。これ.exeは常に Qt アプリ自体と同じディレクトリにあります。

このディレクトリへのパスに空白が含まれることがあります。.exeこれにより、の起動が妨げられているようです。

これが私のコードです(動作していないようです):

.exe最初にコマンド プロンプトを表示せずに を起動できるかどうかはわかりません。が実行されているときは.exe、Qt アプリを閉じる必要があり.exeます。

0 投票する
2 に答える
2409 参照

python - PySide で QProcess によって実行されたコマンドの出力を取得するにはどうすればよいですか?

PySide で QProcess によって実行されたコマンドの出力をキャプチャして表示できるようにする方法を知りたいです。

0 投票する
1 に答える
290 参照

python - PythonでQProcessを使用してファイル出力を取得できません

1. プロセスの出力をログ ファイルにキャプチャしますが、2. プログラムには数時間 (または数日) かかる可能性があるため、切り離して実行します。

どうやら、QProcess.startDetached(command) を使用すると、StandardOutput が失われるため、

動作しません。

動作しますが、タイアップする余裕はありません。また

動作しません。"> logfile" は "my_command" の不正なオプションと見なされます

これはLinux上にあります


問題は、呼び出し元のプログラムを閉じると「my_command」が終了することです。nohup は役に立たないようです。(理由はわかりません)。

0 投票する
2 に答える
641 参照

c++ - メインプログラムとQProcessの間で出力を同期していますか?

私はいくつかのユーザーテストを実行するプログラムを構築しており、非常に短い間隔(10ミリ秒ごと)でユーザーが行っていることに関するデータを記録する必要があります。ほとんどのデータはQTから見つけることができますが、残念ながら、マウスの動きを計算するために別のプログラムを使用する必要があります(マウスがすでに画面の端に当たっていても動きを取得する必要がありますが、QTは画面外の動きを無視します)。

そのため、低レベルのマウス入力を処理し、検出された座標の変化を出力するWindowsプログラムを作成しました。ただし、問題は、Windowsプログラムからデータを取得して、メインプログラムからの出力と一致させることができないことです。

私のメインプログラムでは、次のコードを使用しています。

readMouseData関数は次​​のようになります。

このようなもののいくつかは不要かもしれません。この問題を解決するために、「MergedChannels」モードと「DirectConnection」ビットを追加しました。

私が得ている結果は、Windowsプログラムからの出力が、発生時にファイルストリームに挿入されるのではなく、100ミリ秒ごとに大きなブロックで表示されることです。どこかに埋める必要のあるバッファがあるか、readyRead()シグナルが処理されるまでに遅延があるようです。メインプログラムとQProcessの両方からリアルタイムで出力を取得する方法について誰か提案がありますか?(まあ、少なくとも10ms未満の遅延で)。

また、重要な場合は、Windows 7を実行し、メインプログラムのコンパイルにMinGWを使用し、マウスの動きを検出するWindowsプログラムにVisualStudio2008を使用しています。Windowsでの出力は次のようになります。

これ以上情報が必要な場合はお知らせください。

ありがとう、-Keilan

0 投票する
1 に答える
2339 参照

c++ - QProcess::terminate() は、Windows XP で子プロセスとして単純な Qt アプリで動作しません

まず、QProcess オブジェクトから開始する単純な Qt アプリ:

ここで、QProcess オブジェクトを使用した Qt アプリ:

動作: terminate() により、子プロセスのウィンドウが (そして XP タスクバーから) 消えますが、タスクマンによると、プロセスはまだ実行されています。QProcesswhile (!process.waitForFinished(500))オブジェクトは finished() を発行しないため、永久にループします。驚いたことに、子プロセスから stdin または stderr を介して何も取得しません (QProcess::readAllStandard...()呼び出しの空の文字列のみを出力します)。

QProcess::kill() で子プロセスを終了すると機能しますが、終了する前に子プロセスをクリーンアップする機会が与えられないため、使用したくありません。

興味深いことに、この同じコードは Qt 4.7.4 および OS X 10.6.x で正しく動作します - terminate() により子プロセスが正常に終了するため、XP で何が間違っているのかわかりません。ありがとう。