0

私はexecvp()で遊んでいて、面白いことを見つけました。まず最初にコードを示します。名前空間stdを使用します。

#include <iostream>
#include <unistd.h>

int main(){

    char *argv[3];
    int pid = fork();
    if (pid == 0){
    argv[0] = "ls";
    argv[1] = "-l";
    argv[2] = NULL;
    execvp("ls", argv);
    }

}

これは単純なフォーク+execvpの問題ですが、「ls」が正常に実行された後、コマンドライン(シェル)に戻るにはEnterキーを押す必要があることがわかりました。

execvp( "ls")の後で、 "Enter"を押さずにシェルに戻ることができるようにするには、どうすればよいか知っていますか?

4

1 に答える 1

4

メインプログラムは、ls完了する前に終了します。完了するまでlsに、その出力はシェルプロンプトを覆い隠しています。

これらのいずれかでこれを解決できます。

  • の閉じ中括弧のelse wait(0);後に追加します。if
  • への呼び出しを削除しますfork()
于 2013-01-30T20:11:49.610 に答える