raw device에서 쓰고 읽기

안녕하세요
raw device에 데이타를 쓰고 읽는 간단한 예제를 다음과 같이 작성해서
수행보았는데 write call에서 'Invalid Argument'에러가 나네요
open은 정상적으로 수행되었는데 write 에서 왜 에러가 발생하는지 모르
겠
습니다. 아시는 분의 도움을 부탁드립니다.
그리고 /dev/raw/raw52는 /dev/sdd5에 바인딩하였고요
/dev/sdd5에서는 프로그램이 정상적으로 수행됩니다.
#include
#include
#include
#include
main()
{
int fd = -1;
char mbr[512];
int n;
if((fd=open("/dev/raw/raw52", O_WRONLY)) < 0)
{
printf("open fail-%d\n", errno);
exit(1);
}
memset(mbr, 0, sizeof(mbr));
strcpy(mbr, "This is raw device test");
if((n=write(fd, (char *)mbr, sizeof(mbr))) != 512)
{
printf("write fail-%d\n", errno);
exit(1);
}
close(fd);
if((fd=open("/dev/raw/raw52", O_RDONLY)) < 0)
{
printf("open fail-%d\n", errno);
exit(1);
}
if(read(fd, (char *)mbr, sizeof(mbr)) != 512)
{
printf("read fail-%d\n", errno);
exit(1);
}
printf("%s\n", mbr);
close(fd);
}
댓글 달기