fork download
  1. #include <sys/mman.h>
  2. #include <fcntl.h>
  3. #include <unistd.h>
  4. #include <string.h>
  5.  
  6. int main(int argc, char **argv) {
  7. int sfd, dfd;
  8. char *src, *dest;
  9. size_t filesize;
  10.  
  11. /* ORIGEN */
  12. sfd = open(argv[1], O_RDONLY);
  13. filesize = lseek(sfd, 0, SEEK_END);
  14. src = mmap(NULL, filesize, PROT_READ, MAP_PRIVATE, sfd, 0);
  15.  
  16. /* DESTINO */
  17. dfd = open(argv[2], O_RDWR | O_CREAT, 0666);
  18. ftruncate(dfd, filesize);
  19. dest = mmap(NULL, filesize, PROT_READ|PROT_WRITE, MAP_SHARED, dfd, 0);
  20.  
  21. /* COPIA */
  22. memcpy(dest, src, filesize);
  23. munmap(src, filesize);
  24. munmap(dest, filesize);
  25. close(sfd);
  26. close(dfd);
  27.  
  28. return 0;
  29. }
Success #stdin #stdout 0s 5296KB
stdin
Standard input is empty
stdout
Standard output is empty