Resending On Sun, Aug 16, 2009 at 7:38 PM, Siddu <[email protected]> wrote:
> > > On Sun, Aug 16, 2009 at 3:09 PM, loody <[email protected]> wrote: > >> Dear all: >> I try to open /dev/sda1 with system call, open("/dev/sda1", O_RDONLY). >> But each time it will return negative value, that means fail. >> my program is like below: >> (gdb) list >> 1 #include<stdio.h> >> 2 #include<fcntl.h> >> 3 int main(void) >> 4 { >> 5 int fd=0; >> 6 fd = open("/dev/sda1", O_RDONLY); >> 7 >> 8 printf("%d\n",fd); >> 9 } >> 10 >> (gdb) b 8 >> Breakpoint 1 at 0x8048423: file test.c, line 8. >> (gdb) r >> Starting program: /home/cc/a.out >> >> Breakpoint 1, main () at test.c:8 >> 8 printf("%d\n",fd); >> (gdb) p fd >> $1 = -1 >> (gdb) >> >> >> But I am quite sure I really get /dev/sda1 on my linux system. >> below are the dmesg: >> $ dmesg |grep sda >> [ 4.304624] sd 0:0:0:0: [sda] 117210240 512-byte hardware sectors >> (60012 MB) >> [ 4.304642] sd 0:0:0:0: [sda] Write Protect is off >> [ 4.304646] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 >> [ 4.304672] sd 0:0:0:0: [sda] Write cache: enabled, read cache: >> enabled, doesn't support DPO or FUA >> [ 4.304742] sd 0:0:0:0: [sda] 117210240 512-byte hardware sectors >> (60012 MB) >> [ 4.304757] sd 0:0:0:0: [sda] Write Protect is off >> [ 4.304760] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 >> [ 4.304786] sd 0:0:0:0: [sda] Write cache: enabled, read cache: >> enabled, doesn't support DPO or FUA >> [ 4.304790] sda:<4>Driver 'sr' needs updating - please use bus_type >> methods >> [ 4.319499] sda1 sda2 sda3 < sda5<6>usb 4-2: configuration #1 >> chosen from 1 choice >> [ 4.359729] sda6 > sda4 >> [ 4.359951] sd 0:0:0:0: [sda] Attached SCSI disk >> [ 22.637589] EXT3 FS on sda4, internal journal >> [ 23.586600] EXT3 FS on sda6, internal journal >> $ >> Does that mean I use the wrong systemcall or we cannot open /dev/sda1 like >> this? >> appreciate your help, >> miloody >> > Try to run the following code as root and also as normal user . You ll see > the difference > #include <stdio.h> > #include <fcntl.h> > > > int main ( int argc , char *argv[] ) { > int fd = 0; > > fd = open( "/dev/sda1" , O_RDONLY ); > > if ( fd == -1 ) { > perror( "The System Error Message was " ); > } > else { > printf("The File Descriptor is : %d \n", fd ); > } > return 0; > } > > > >> -- >> To unsubscribe from this list: send an email with >> "unsubscribe kernelnewbies" to [email protected] >> Please read the FAQ at http://kernelnewbies.org/FAQ >> >> > > > -- > Regards, > ~Sid~ > > -- Regards, ~Sid~
