を制御しますメッセージは印刷されず、ブロック1のメッセージのみが印刷されます。Cシステムは、()は、このモデルでは、標準出力
誰が何が起こっているのか、その解決策は何かを知っていますか?
を制御しますメッセージは印刷されず、ブロック1のメッセージのみが印刷されます。Cシステムは、()は、このモデルでは、標準出力
誰が何が起こっているのか、その解決策は何かを知っていますか?
int system(const char *command)
関数を使用して他のアプリケーションを実行すると、呼び出されたアプリケーションが終了するまでアプリケーションは待機します。そのため、Block 2
の出力は表示されません。
&
を最後のオフコマンドに追加すると、アプリケーション全体が異なるプロセスとして実行されます。だから、あなたはこれを試すことができます。
strcpy(call, "xdg-open ");
strcat(call, url);
strcat(call, " &");
system(call);
また、あなたはstdout
バッファをフラッシュするので、Block 2
後fflush(stdout)
を呼び出す必要があります。
同じ結果を出す前に、私はそれを試しました。コマンドの実行は終了したようですが、stdoutは同じままです。 – amportugal
デバッグメッセージを出力した後、 'fflush(stdout)'を呼び出すようにしてください。 – Firzen
これは問題を一時的に解決しますが、これは非常に複雑なプログラムの1つの機能です。デバッグメッセージを印刷するのは面倒です。 – amportugal
'system'コールは、そのサブプロセスが終了するのを待ちます。言い換えれば、 'xdg-open'が閉じられるときにのみ、コントロールはブロック2に渡されます。 –
私は今理解していますが、どうすれば "問題"を解決できますか? – amportugal