0

C++ コードからコンパイルされた exe ファイルがあります。そして、bash を使用して Linux 環境をセットアップし、この.exeプログラムを呼び出します。

ここで問題になりますが、ほとんどの場合、ユーザーはctrlcプログラムの使用を終了するとき、または続行したくないときにプロセスを強制終了するために使用したいと考えています。

bash プロセスはctrlc正常に終了しますが、.exe通常は強制終了されずに実行されています。そのため、ユーザーkill -9 xxxはプロセスを強制終了するために使用する必要があります。殺すのを忘れると、CPU が完全に占有される可能性があります。

この問題を解決するにはどうすればよいですか? exeファイルのコードやbashスクリプトをどうにかしようかな。

ありがとう

4

3 に答える 3

0

プログラムを bash スクリプトで切り離しますか? 次のように呼びますか。

exe&

「&」を削除すると、スクリプトは次のコマンドを実行する前にプログラムの終了を待機します。

問題がない場合は、プログラムをコンソールに接続してみてください。例、Qt プロジェクト文字列:

CONFIG += console

.pro ファイルでアプリケーションをコンソールにアタッチすると、スクリプトはアプリケーションの終了を待ち、Ctrl+C でアプリケーションを終了します。

于 2013-09-12T14:49:06.953 に答える
0

これは、ずっと前に書かれた私の古いコードからのものです。これを使用してffmpegを強制終了しました。コードも貼り付けています。私はctr + cを使用していません。プロセスpidを使用してそれを強制終了しています。これは良い方法に違いないと思います。

        else if (strcmp(client_message,"2-off") == 0) {
            printf("start audio streeaming will be turned of\n");
            fp = popen("pidof ffmpeg", "r");
            fgets(line, 100, fp);
            pid = atoi(line);
            printf("pid = %d\n",pid);
            sprintf(command,"kill %d",pid);
            status = system(command);
            pclose(fp);
        }
于 2013-09-12T10:11:39.870 に答える