問題タブ [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 投票する
2 に答える
3869 参照

linux - QThread 内で実行中の進行中の QProcess を終了しますか?

QThread 内で実行され、別の QThread によって削除される進行中の QProcess を終了する方法は? QMutex extCmdProcessLock も挿入しました。これにより、extCmdProcess が終了またはタイムアウトする前に DbManager が破壊されるのを回避できます。別のスレッドが DbManager で削除を呼び出すと、「waitForStarted」でセグメンテーション違反が発生します。シーケンシャルデータ処理内で外部コマンドを使用しているため、シグナルを使用できません(と思います)。助けてくれてありがとう!

付録 A:「QProcess: Destroyed while process is still running.」というエラーも表示されます。そして、これは、waitForStarted() コマンドが完了していない間に、他のスレッドからの「delete dbmanager」呼び出しが実行されることを意味する可能性があることを読みました。しかし、デストラクタの kill() コマンドでこれが修正されなかったのはなぜだろうか。

付録 B:コメントによると、追加されましwaitForFinished()た。waitForStarted()悲しいことに、QProcess の終了はまだ適切にシャットダウンされませんstart()

付録 C:デバッグ出力に、次のエラー メッセージが表示されました: QProcess: Destroyed while process is still running. 終了失敗出力が表示された場合は、常に表示されます。これは、QProcess を保護するためのロックまたは強制終了の試みが失敗していることを意味します。気になる質問:

a) QProcess オブジェクトを作成して開始すると、ロックがextCmdProcessLock解除されますか? lock()の代わりに通常の呼び出しを使用しようとしましたQMutexLoaderが、うまくいきませんでした。

b)この方法で QProcess を使用すると、メイン スレッドが停止するというドキュメントがあります。それらは本当にメインスレッドまたはQProcess が開始されるスレッドを意味しますか? 私は2番目だと思いました。

c) QProcess はマルチスレッド環境では使用できませんか? 2 つのスレッドが QProcess オブジェクトを作成して実行すると、干渉しますか? 多分オブジェクトはどういうわけか静的ですか?

知識の漏れを埋めるのを手伝ってくれてありがとう。そのパズルが解けることを心から願っています。

付録 D:任意のスレッドから delete と deleteLater() を削除した後も、私の QProcess は破壊されたままです。

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

multithreading - QProcessエラーステータス5の理由は何ですか?

次のQProcessを実行している複数のスレッドがあります。ランダムにエラー状態5で失敗します。Qtのドキュメントにはこれ以上の詳細は記載されていません。誰かがそのエラーが何から来るのか手がかりを持っていますか?どうもありがとうございます。

私に出力を与えます:

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

qt - QProcess exits before complete

I've got some code that starts mencoder in a QProcess, converts a video while displaying a progress bar, then exits. The problem is, mencoder always exits before it's actually finished. The loop runs through a few times, and then closes. If I comment out the line that updates the progress bar (progress.setValue()), mencoder runs to completion and exits happily.

Been at this for a day, and can't figure it out! Also, I should mention I'm on a Mac.

Any ideas?

Thanks

Marlon

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

qt - QThread から QProcess を開始する

Qt スレッド内からコマンドライン実行可能ファイルを起動し、スレッドのコンテキスト内で同じものを実行する必要がある Qt で QThreads を使用していました。

以下のコードを使用しましたが、正常に動作しているようです。ただし、QThread 内から QProcess を起動しているため、この種の使用が許可されているかどうかを知りたいと思いました。

あなたの応答を待っています。

よろしく、

サウラブ G.

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

qt - GUIをフリーズせずにQProcessの同期チェーンを実行するには?

いくつかの外部プログラムの助けを借りて画像を最適化したいと考えています。プログラムは 1 つずつ実行する必要があり、一部は最後のプログラムの出力に依存し、一部は画像の特性に依存します。

シグナルを使用できることはわかっていますが、ここではあまり役に立ちません。外部プログラムごとに数十の関数とシグナルを使用する必要があり、プログラムが呼び出される位置によっては複数回使用するものもあります。チェーンで。それらを1つずつ実行する方がはるかに簡単です。しかし、そうすると、すべてのプロセスが完了するまで、ステータスメッセージが表示されなくても、GUIがすぐにフリーズします。他に何ができますか?

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

qt - QProcess は、stdin および stdout からのファイルで開始します

QProcess から次のステートメントを実行する必要があります。

QTで:

しかし、どういうわけかうまくいきません。タスク マネージャーでコマンドが正しく表示されていることがわかりますが、プログラムは引数なしで実行されているようです。私のエラーはどこですか?

0 投票する
3 に答える
796 参照

qt - QtGuiからのstdin入力を期待するアプリを呼び出す方法は?

Ubuntu と Qt Creator 4 を使用しています

abc.outボタンを押したときに実行したい実行形式 (たとえば ) の .cpp プログラムがあります。これにはいくつかの cin と cout が含まれているため、値を入出力できるように「端末」(Ubuntu) で実行する必要があります。どうやってやるの?

system() と QProcess p1; を試しました。p1.start(./abc.out);

QProcess を使用すると、実行可能ファイルは実行されますが、最初のカウントで停止します。ターミナルではなく、Qt Creator のアプリケーション出力画面で実行されます。

例: アプリケーションの出力に次のように表示されます。

名前を入力:

ここで値を入力して Enter キーを押すと、値が受け入れられず、次の行に移動してさらに入力できるようになります。abc.outこのファイルを端末で実行したい。どんなアイデアでも本当に役に立ちます。

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

linux - QProcess の優先度を強制する方法

QProcessQt ドキュメントに a の優先度を設定する API がありません。プロセスは通常の優先度で開始されると思います。

Linux で優先度の低いプロセスを開始する方法はありますか?

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

qt - QProcess: プロセスを独立させ、Windows で問題を解決する

プログラム アップデーターとして機能する QProcess がありますが、Windows では実行中の exe ファイルを変更することはできませんが、アップデーター プロセスを作成したプログラムを閉じると、アップデーターも閉じてしまうと思います。Updater プロセスを独立させることは可能ですか?

次に、Windows Vista (およびそれ以降) では、レベルを管理者に昇格させる必要があるというメッセージが返されるため、アップデーターを実行できません。プロセスのアクセス許可を昇格させることは可能ですか?

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

qt - Q管理者権限でのプロセス

QProcess を使用して、.sh ファイルからシェル スクリプトを実行したいと考えています。私が抱えている問題は、ユーザー権限にあります。.sh ファイルを使用するための適切な権限を得るために、ユーザーに管理者のユーザー名とパスワードを求めるにはどうすればよいですか?

次のようなプロンプトが欲しいです。 ここに画像の説明を入力

ありがとうございました