How to read / write block device? I heard that I read / write like a regular file, so I set up the loop device by doing
sudo losetup /dev/loop4 ~/file
Then I ran the application in a file, then the loop device
sudo ./a.out file sudo ./a.out /dev/loop4
The file is executed perfectly. The loop device reads 0 bytes. In both cases, I got FP == 3 and turned off == 0. The file gets the line length correctly and prints the line when the loop gets me 0 and prints nothing
How to read / write to the block device?
#include <fcntl.h> #include <cstdio> #include <unistd.h> int main(int argc, char *argv[]) { char str[1000]; if(argc<2){ printf("Error args\n"); return 0; } int fp = open(argv[1], O_RDONLY); printf("FP=%d\n", fp); if(fp<=0) { perror("Error opening file"); return(-1); } off_t off = lseek(fp, 0, SEEK_SET); ssize_t len = read(fp, str, sizeof str); str[len]=0; printf("%d, %d=%s\n", len, static_cast<int>(off), str); close(fp); }
user34537
source share