|
发表于 2003-5-26 20:28:06
|
显示全部楼层
我们的目的是写第四个扇区。
[code:1]
test.c
1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <sys/stat.h>
4 #include <fcntl.h>
5 #include <sys/errno.h>
6
7 #define DEVICE_NAME "/dev/sda"
8 #define MY_OFFSET (3 * 512)
9
10 struct mysector {
11 char pad[512];
12 };
13
14 int
15 main(int argc, char *argv[])
16 {
17 int i, fd;
18 struct mysector mytest;
19
20 for( i = 0; i < 512; i++)
21 mytest.pad[i] = (char)(i / 4);
22 fd = open(DEVICE_NAME, O_RDWR);
23 if( !fd ) {
24 printf("errno is %d\n", errno);
25 return errno;
26 }
27 lseek(fd,MY_OFFSET,SEEK_SET);
28 write(fd, &mytest, 512);
29 close(fd);
30 return 0;
31 }
[/code:1]
我的硬盘是scsi的。
#gcc -o test test.c
#./test
# dd if=/dev/sda of=file skip=3 count=1
# hexdump file
0000000 0000 0000 0101 0101 0202 0202 0303 0303
0000010 0404 0404 0505 0505 0606 0606 0707 0707
0000020 0808 0808 0909 0909 0a0a 0a0a 0b0b 0b0b
0000030 0c0c 0c0c 0d0d 0d0d 0e0e 0e0e 0f0f 0f0f
0000040 1010 1010 1111 1111 1212 1212 1313 1313
0000050 1414 1414 1515 1515 1616 1616 1717 1717
0000060 1818 1818 1919 1919 1a1a 1a1a 1b1b 1b1b
0000070 1c1c 1c1c 1d1d 1d1d 1e1e 1e1e 1f1f 1f1f
0000080 2020 2020 2121 2121 2222 2222 2323 2323
0000090 2424 2424 2525 2525 2626 2626 2727 2727
00000a0 2828 2828 2929 2929 2a2a 2a2a 2b2b 2b2b
00000b0 2c2c 2c2c 2d2d 2d2d 2e2e 2e2e 2f2f 2f2f
00000c0 3030 3030 3131 3131 3232 3232 3333 3333
00000d0 3434 3434 3535 3535 3636 3636 3737 3737
00000e0 3838 3838 3939 3939 3a3a 3a3a 3b3b 3b3b
00000f0 3c3c 3c3c 3d3d 3d3d 3e3e 3e3e 3f3f 3f3f
0000100 4040 4040 4141 4141 4242 4242 4343 4343
0000110 4444 4444 4545 4545 4646 4646 4747 4747
0000120 4848 4848 4949 4949 4a4a 4a4a 4b4b 4b4b
0000130 4c4c 4c4c 4d4d 4d4d 4e4e 4e4e 4f4f 4f4f
0000140 5050 5050 5151 5151 5252 5252 5353 5353
0000150 5454 5454 5555 5555 5656 5656 5757 5757
0000160 5858 5858 5959 5959 5a5a 5a5a 5b5b 5b5b
0000170 5c5c 5c5c 5d5d 5d5d 5e5e 5e5e 5f5f 5f5f
0000180 6060 6060 6161 6161 6262 6262 6363 6363
0000190 6464 6464 6565 6565 6666 6666 6767 6767
00001a0 6868 6868 6969 6969 6a6a 6a6a 6b6b 6b6b
00001b0 6c6c 6c6c 6d6d 6d6d 6e6e 6e6e 6f6f 6f6f
00001c0 7070 7070 7171 7171 7272 7272 7373 7373
00001d0 7474 7474 7575 7575 7676 7676 7777 7777
00001e0 7878 7878 7979 7979 7a7a 7a7a 7b7b 7b7b
00001f0 7c7c 7c7c 7d7d 7d7d 7e7e 7e7e 7f7f 7f7f
0000200
和我们预想的一样。 |
|