1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| #define _FILE_OFFSET_BITS 64 #include<string.h> #include<sys/stat.h> #include<fcntl.h> #include<unistd.h> #include<errno.h> #include<stdlib.h>
#define debug #ifdef debug #include<stdio.h> #endif void writeErr(const char* str);
#ifdef _LARGEFILE64_SOURCE int main(int argc, char **argv) { #ifdef debug printf("sizeof(long) = %d, sizeof(long long) = %d, sizeof(off_t) = %d, sizeof(off64_t) = %d\n", sizeof(long), sizeof(long long), sizeof(off_t), sizeof(off64_t)); #endif if(argc !=3 || strcmp(argv[1], "--help") == 0) { writeErr(argv[0]); writeErr(" pathname offset\n"); exit(3); } int fd = open64(argv[1], O_RDWR | O_CREAT, S_IRUSR|S_IWUSR); if(fd == -1) { writeErr("open64 fail"); exit(2); } off64_t off = atoll(argv[2]); if(lseek64(fd, off, SEEK_SET) == -1) { writeErr("lseek64"); exit(3); } if(write(fd, "test", 4) == -1) { writeErr("write"); exit(4); } return 0; } #endif
#ifdef _FILE_OFFSET_BITS int main(int argc, char **argv) { #ifdef debug printf("sizeof(long) = %d, sizeof(long long) = %d, sizeof(off_t) = %d\n", sizeof(long), sizeof(long long), sizeof(off_t)); #endif if(argc !=3 || strcmp(argv[1], "--help") == 0) { writeErr(argv[0]); writeErr(" pathname offset\n"); exit(3); } int fd = open(argv[1], O_RDWR | O_CREAT, S_IRUSR|S_IWUSR); if(fd == -1) { writeErr("open64 fail"); exit(2); } off_t off = atoll(argv[2]); if(lseek(fd, off, SEEK_SET) == -1) { writeErr("lseek64"); exit(3); } if(write(fd, "test", 4) == -1) { writeErr("write"); exit(4); } return 0; }
#endif void writeErr(const char* str) { errno = 0; int writeSize = write(STDERR_FILENO, str, strlen(str)); if(writeSize == -1) { exit(1); } }
|