より多くのファイルを同時に転送するプログラムを書きたいです。ある時点で、不正なファイル記述子エラーを受け取りました。私は何をしましたか?サイズの降順ですべてのファイルがあります(この順序で開きますが、f-> filename [i]は変更されません)。これらのファイルのアクセス許可を変更しました:chmod ugo+wrx。ファイルが完全に送信されたら、「for」の後にnumberOfFilesをデクリメントします。私の問題は、ファイルに書き込みたいときに不正なファイル記述子を返すことですが、そのファイルを閉じたいときに正常に機能します。
動作しないコードは次のとおりです。
//open all the files that I want to send
f->fileIndex[i] = open(f->fileName[i],O_RDONLY | O_CREAT);
if (f->fileIndex[i] < 0 ) {
perror("ERROR: Cannot open/create the file \n");
}
....
for (i=1; i<numberOfFiles; ++i){
if (write(f->fileIndex[i],aux,sz) == -1) {
perror("ERROR Cannot write\n");
}
printf("%d %s\n",f->fileIndex[i],aux);
// aux = what I want to write
...
if (f->size[i] <= 0) { //If the whole file was sent
printf("close the file %s\n",f->fileName[i]);
if (close(f->fileIndex[i])) { // and here it works fine ...
perror("cannot open the file\n");
}
}
}
チェックしたところ、file_descriptorの値は同じです。私が間違っているところをお願いします。どんなヒントも役に立ちます!ありがとう!