- 论坛徽章:
- 0
|
- #include <stdio.h>
- #include <sys/types.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <sys/stat.h>
- #define FILE_MODE (O_RDWR|O_CREAT)
- int main(void)
- {
- off_t currpos;
- int fd;
- fd = creat("file.hole", FILE_MODE);
- if(fd == -1){
- perror("creat");
- return 1;
- }
- currpos = lseek(fd, -1, SEEK_SET);
- if(currpos == -1){
- printf("can not support lseek\n");
- }
- else{
- printf("support seek\n");
- }
- return 0;
- }
复制代码
APUE2中说:因为偏移量可能是负值,所以在比较lseek的返回值时,应该测试是否是-1,而不要测试是否小于0。
因为文件偏移量可以是负值,所以也可以是-1,而lseek出错也返回-1。
在本程序中偏移量currpos = = -1,是属于lseek出错呢还是属于偏移量是-1呢? |
|