作者mayasky ( )
看板LinuxDev
标题Re: [问题] 关於sys call-open() read() write()..
时间Fri Nov 17 15:25:45 2006
※ 引述《mayasky ( )》之铭言:
: ※ 引述《mayasky ( )》之铭言:
: : 标题: [问题] 关於sys call-open() read() write()..
: : 时间: Thu Nov 16 00:26:04 2006
: : 由於我需要低阶直接存取功能,我不使用C的LIB去做档案操作
: : 我直接用open与read.write
: : 但始终有Illegal seek
: : 但是档案又写的进去读得出来(在不同程式)
: : --
: : ◆ From: 140.114.71.192
: : → qrtt1:有没有范例能看 :P 11/16 11:06
: 残念,由於安全问题,新的KERNEL都不准open配上O_DIRECT了,
抱歉各位,以上那句话需要修正,是可以用的,只是要多加点东西
CODE在试验中东改西改,有点乱请包涵
=====================read================================
#include <stdio.h>;
#include <sys/types.h>;
#include <sys/stat.h>;
#include <asm/fcntl.h>;
#include <unistd.h>;
#define _XOPEN_SOURCE 600
#include <stdlib.h>;
//int posix_memalign(void **memptr, size_t alignment, size_t size);
// #include <fcntl.h>
typedef struct _pp
{
char name[10];
int high;
}pp;
main()
{
int fd;
int i, r;
pp *bp;
r = posix_memalign(&bp, 512, sizeof(pp));
//要设定这个才可用O_DIRECT,但我不是很明确知道用法
printf("r = %d\n", r);
fd = open("/raid/data", O_CREAT | O_RDWR | O_DIRECT, 0644);
//posix_fadvise(fd,0,0,1);
printf("fd = %d\n", fd);
r = read(fd, bp, 512);
printf("name: %s high: %d\n",bp->name,bp->high);
close(fd);
}
===============================write===========================
暂时找不到是哪个档了..眼花XD~稍晚补上
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.71.192
1F:推 fuha:这个范例 好像没有 free() 04/12 14:49