0

コードの一部として、ユーザーが入力できる関数を作成しようとしています

shell> run date     //Line of user input
Mon Jan 19 11:51:57 EST 2009  //Printed by program
shell: process 348 exited normally with status 0

ユーザーが「実行日」と入力するだけで、プログラムは下の 2 行を表示します。これは、これまでのところ私の機能にあるものです..

 else if(strcmp(argv[1],"run") == 0 ) {
           if ((pid = fork()) < 0) {  //Child process fork
                    perror("fork");       
                    exit(1);
                    }   
            //printf("ok");
            if (pid == 0) {  //Child executes code
                    execvp(argv[2], &argv[2]); 
                    exit(1);
                    }

    waitpid(atoi(argv[2]), &status, WNOHANG);

    printf("shell: run status is %d\n", status);
    }

これはまだ作成されていませんが、これが今のところ正しいかどうか、重要な部分が欠けているかどうかを知りたいと思っていました! ありがとうございました。

4

1 に答える 1

4

waitpid子の PIDに対する最初の引数。また、WNOHANG オプションを使用すると、呼び出しプロセスがブロックされるのを防ぐことができます。そのwaitpidため、目的のプロセスのステータス情報が利用できない場合は 0 を返します。子プロセスが終了するまで待ちたい場合は0、 の 3 番目の引数としてwaitpid(またはwaitの代わりにwaitpid) を使用します。

于 2014-02-20T02:18:47.967 に答える