rename.c 949 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include <unistd.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <errno.h>
  5. #include <sys/stat.h>
  6. #include <fcntl.h>
  7. #define TESTFILE "testfile"
  8. int main(int argc, char ** argv)
  9. {
  10. int ret = 0, fd;
  11. if ((ret = creat(TESTFILE, 0600)) < 0) {
  12. perror("creat");
  13. exit(1);
  14. }
  15. fd = ret;
  16. if ((ret = write(fd, "Hello World", 11)) < 0) {
  17. perror("write");
  18. exit(1);
  19. }
  20. close(fd);
  21. if ((ret = rename(TESTFILE, TESTFILE ".new")) < 0) {
  22. perror("rename");
  23. exit(1);
  24. }
  25. if ((ret = open(TESTFILE ".new", O_RDONLY)) < 0) {
  26. perror("open");
  27. exit(1);
  28. }
  29. fd = ret;
  30. char buffer[12];
  31. if ((ret = read(fd, buffer, 11)) < 0) {
  32. perror("read");
  33. exit(1);
  34. }
  35. buffer[11] = 0;
  36. printf("%s\n", buffer);
  37. close(fd);
  38. if ((ret = unlink(TESTFILE ".new")) < 0) {
  39. perror("unlink");
  40. exit(1);
  41. }
  42. return 0;
  43. }