0

誰がこれの何が問題なのか教えてもらえますか? 私はまだ分岐の初心者です。コンピューターは 1 番目と 2 番目を実行しますが、3 番目の wc は機能しません。ひどく助けが必要です。ターミナルは、完了した複数の子プロセスを返しますが、wc は返しません。

pid_t son;
int i;

for (i=0; i<=3; i++){
        switch (i){
            case 0:
            son = fork();
                if (son<0){
                    fprintf(stderr, "Fork failed!");
                    //exit(-1);
                }else if (son == 0){
                    execlp("/bin/cat", "cat", "wctrial.txt", NULL);
                    exit(0);
                }else{
                wait(NULL);
                printf("Child process completed!");

                }
            case 1:
            son = fork();
                if (son<0){
                    fprintf(stderr, "Fork failed!");
                    //exit(-1);
                }else if (son == 0){
                    execlp("/bin/mkdir", "mkdir", "mydirectory", NULL);
                    exit(0);
                }else{
                wait(NULL);
                printf("Child process completed!");
                }
            case 2:
            son = fork();
                if (son<0){
                    fprintf(stderr, "Fork failed!");
                    //exit(-1);
                }else if (son == 0){
                    printf("Work!");
                    execlp("usr/bin/wc","wc","-w","wctrial.txt", NULL);
                    exit(0);
                }else{
                wait(NULL);
                printf("Work!");
                printf("Child process completed!");
                exit(0);
                }
        }
}

}

4

1 に答える 1

0

コメントを回答としてマークする機能のリクエストは引き続き拒否されるため、上記のソリューションをここにコピーします。

パスの先頭のスラッシュを忘れました。– ヨアヒム・ピレボルグ

「usr/bin/wc」は「/usr/bin/wc」である必要があります – Basile Starynkevitch

于 2014-06-06T12:30:02.557 に答える