#include <unistd.h>
|
int
truncate (const char *path, off_t length); |
int
ftruncate (int fd, off_t length); |
//example for truncate #include<unistd.h> #include<stdio.h> #include <sys/stat.h> int test_truncate() { int retVal, retVal2, retSize, retSize2; struct stat buf; ssize_t size; char *buffer = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx"; int fp = open("c:\test.txt", O_RDWR|O_CREAT); size = write(fp,buffer,50); close(fp); retVal2 = stat("c:\test.txt", &buf ); if ( !retVal2 ) { retSize = buf.st_size; printf("Size before: %d", retSize); retVal = truncate("c:\test.txt", retSize/2 ); } else { printf("Failed"); } retVal2 = stat( "c:\test.txt", &buf ); if ( !retVal2 ) { retSize2 = buf.st_size; if( retSize2 == (retSize/2 ) ) { printf("\nSize after: %d\n", retSize2); printf("Truncate passed"); return 0; } else { printf("Failed"); return -1; } } else { printf("Failed"); return -1; } }
Output
Size before: 50 Size after: 25 Ttruncate Passed //example for ftruncate #include<unistd.h> #include<stdio.h> int test_ftruncate() { //assuming that the file exists and has some //data in it int fp = open("c:\test.txt", O_RDWR); int retVal, retVal2, retSize, retSize2; struct stat buf; if(fp != -1) { retVal2 = fstat( fp, &buf ); if ( !retVal2 ) { retSize = buf.st_size; printf("Size before: %d", retSize); retVal = ftruncate( fp, retSize/2 ); close(fp); } else { printf("Failed"); } fp = open("c:\test.txt", O_RDONLY); if((fp != -1) && (!retVal)) { retVal2 = fstat( fp, &buf ); if ( !retVal2 ) { retSize2 = buf.st_size; if( retSize2 == (retSize/2 ) ) { printf("\nSize after: %d\n", retSize2); printf("Ftruncate Passed"); } else { printf("Failed"); } } else { printf("Failed"); } } }
Output
Size before: 100 Size after: 50 Ftruncate Passed
[EBADF] | |
The fd argument is not a valid descriptor for a regular file. | |
[EINVAL] | |
The fd argument references to an object other than a file. | |
[EINVAL] | |
The fd descriptor is not open for writing. | |
Use of truncate to extend a file is not portable.
© 2005-2007 Nokia |