Question

Le problème avec SendFile est qu'il ne peut pas copier deux fichiers texte à l'aide du fichier FDS. L'erreur est einval. // Le descripteur n'est pas valide ou verrouillé, ou un MMAP () - Le fonctionnement n'est pas disponible pour IN_FD.

Qu'est-ce que cela signifie vraiment ?

Depuis la page man de SendFile (man sendfile), j'ai trouvé cette déclaration. Je ne sais pas si cela fonctionnera pour copier deux fichiers réguliers ou non.

Actuellement (Linux 2.6.9): IN_FD, doit correspondre à un fichier qui prend en charge mmap () - comme les opérations (c'est-à-dire, il ne peut pas être une prise); et out_fd doit se référer à une prise.

   Applications may wish to fall back to read(2)/write(2) in the case where sendfile() fails with EINVAL or ENOSYS.
Était-ce utile?

La solution

L'idée derrière sendfile() est d'envoyer rapidement un fichier sur une prise (pensez aux serveurs Web). Les fichiers réguliers peuvent être mmap()ED, mais ne sont pas des sockets, il explose donc lorsque vous lui remettez un fichier régulier comme destination.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top