您的位置:首页 > 产品设计 > UI/UE

apue第三章文件I/O

2015-10-10 14:22 507 查看
create():

#include "apue.h"
#include <fcntl.h>

char buf1[] = "abcdefghij";
char buf2[] = "ABCDEFGHIJ";

int main(void)
{
int fd;

if ((fd = creat("file.hole",(S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH | S_IWGRP))) < 0)
err_sys("creat error");

if (write(fd, buf1, 10) != 10)
err_sys("buf1 write error");
/* offset now = 10 */

if (lseek(fd, 16384, SEEK_SET) == -1)
err_sys("lseek error");
/* offset now = 16384 */

if (write(fd, buf2, 10) != 10)
err_sys("buf2 write error");
/* offset now = 16394 */

exit(0);
}


-rw-rw-r-- 1 lili lili 16394 10月 10 14:12 file.hole

fntl中的定义:

# define S_IRUSR	__S_IREAD       /* Read by owner.  */
# define S_IWUSR	__S_IWRITE      /* Write by owner.  */
# define S_IXUSR	__S_IEXEC       /* Execute by owner.  */
/* Read, write, and execute by owner.  */
# define S_IRWXU	(__S_IREAD|__S_IWRITE|__S_IEXEC)

# define S_IRGRP	(S_IRUSR >> 3)  /* Read by group.  */
# define S_IWGRP	(S_IWUSR >> 3)  /* Write by group.  */
# define S_IXGRP	(S_IXUSR >> 3)  /* Execute by group.  */
/* Read, write, and execute by group.  */
# define S_IRWXG	(S_IRWXU >> 3)

# define S_IROTH	(S_IRGRP >> 3)  /* Read by others.  */
# define S_IWOTH	(S_IWGRP >> 3)  /* Write by others.  */
# define S_IXOTH	(S_IXGRP >> 3)  /* Execute by others.  */
/* Read, write, and execute by others.  */
# define S_IRWXO	(S_IRWXG >> 3)
#endif
write():
ssize_t write (int fd,const void * buf,size_t count);
函数说明
write()会把指针buf所指的内存写入count个字节到参数fd所指的文件内。当然,文件读写位置也会随之移动。
返回值
如果顺利write()会返回实际写入的字节数。当有错误发生时则返回-1,错误代码存入errno中。

open():

int fd = open("/dev/stdout",O_WRONLY | O_RDONLY));

int fd = open("/dev/fd/0",O_WRONLY | O_RDONLY));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: