unix i/o create函数解惑
来源:互联网 发布:外网监控软件 编辑:程序博客网 时间:2024/05/24 05:03
刚开始学习unix编程,在网上看到有人提问代码如下,问题是为什么read的时候总是返回-1.他的理由create的时候已经指定有读写权限了。
#include <stdio.h>#include <fcntl.h>#include <sys/stat.h>#include <stdlib.h>#include <unistd.h>#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)char buf1[] = "abcdefghij";char buf2[] = "ABCDEFGHIJ";char buf3[10];intmain(void){ int fd; if ((fd = creat("/Users/jessy/Desktop/file.hole", FILE_MODE)) < 0) printf("creat error"); if (write(fd, buf1, 10) != 10) printf("buf1 write error"); /* offset now = 10 */ printf ("%zd\n", read(fd, buf3, 2)); if (lseek(fd, 16384, SEEK_SET) == -1) printf("lseek error"); /* offset now = 16384 */ if (write(fd, buf2, 10) != 10) printf("buf2 write error"); /* offset now = 16394 */ if (lseek(fd, 1, SEEK_SET) != 1) printf ("Error lseek!\n"); if (read(fd, buf3, 2) < 0) { perror("read:"); } printf ("%zd\n", read(fd, buf3, 2)); exit(0);}
下面是create函数的一段话:creat 函数只能以只读方式创建新文件。如果我们要以读写方式创建新文件,可以用 open 函数;creat 函数现在已经没什么用处了,因为 open 比 creat 好用多了。解决!!
perror("read:");可以打印出错误信息。此段代码报Bad file descriptor错误。
0 0
- unix i/o create函数解惑
- UNIX文件I/O函数
- 标准I/O与Unix I/O函数整合
- unix环境下文件I/O函数
- unix----文件I/O
- Unix I/O模型
- Unix I/O 模型
- UNIX I/O
- I/O unix 接口
- Unix I/O操作
- UNIX I/O
- UNIX I/O摘要
- UNIX文件 I / O
- UNIX File I/O
- unix 环境下c函数摘要( i/o部分)
- unix环境高级编程之一( 基本I/O函数)
- UNIX网络编程------高级I/O函数(十四)
- 《深入理解计算机系统》之Unix I/O函数
- CountDownLatch的使用
- Eclipse快捷键大全
- 【转载】用CSS将登录框水平垂直居中于浏览器
- 给RedHat机器配置CentOS的Repository
- JS基础——属性操作
- unix i/o create函数解惑
- C修改文件内容
- java 基于linkedhashmap实现LRUCache
- 大奖赛积分
- 架设Hmailserver+webmail邮件服务器
- Android 休眠 FLAG_KEEP_SCREEN_ON
- Quick-Cocos2d-x-3.2中示例Coinfilp总结(二)
- Jsp基础知识
- 使用HttpClient实现文件和其他表单数据的上传