我想编写一个同时传输更多文件的程序。有一次我收到了错误的文件描述符错误。我做了什么?我将所有文件按大小降序排列(我按此顺序打开它们, 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 的值相同。请问我哪里错了,好吗?任何提示都会有所帮助!谢谢!