0

問題を解決しようとしていますが、何をしなければならないのかわかりません。問題は次のとおりです。

「コマンド ラインから n 個のファイル arg1、arg2、...、argn の名前を受け取る親プロセスを作成します。親は n-2 の子プロセスを作成します。すべての子プロセスは 2 つの引数 i、argi を受け取ります。argi ファイルは次のようになります。 i>2 の場合に変更: i の倍数の位置にあるすべてのバイトを argi ファイルから削除します。"

これは私がこれまでに行ったことです:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char* argv[]){
printf("Creating a child\n");
int i;
for(i=0;i<argc-2;i++){
 if(fork()==0){
 printf("CHILD %d!\n",i+1);
 exit(0);
 }
}
wait(0);
}

何か提案はありますか?

4

1 に答える 1

1

ループを 2 から argc-1 (包括的) まで数えたほうがよいでしょう。argc-2 フォークを実行しているので、単一の待機ではなく、argc-2 も待機する必要があります。それ以外は、ファイルを読み込んで、指定されたビットを削除した後に書き戻すだけです。

于 2013-04-10T18:40:08.157 に答える