ブロックデバイスを読み書きするにはどうすればよいですか? 通常のファイルのように読み書きできると聞いたので、次のようにしてループデバイスをセットアップしました
sudo losetup /dev/loop4 ~/file
次に、ファイルでアプリを実行し、次にループデバイスを実行しました
sudo ./a.out file
sudo ./a.out /dev/loop4
ファイルは完全に実行されました。ループ デバイスは 0 バイトを読み取ります。どちらの場合も、FP==3 と off==0 を取得しました。ファイルは文字列の長さを正しく取得し、文字列を出力しますが、ループは私を0にして何も出力しません
ブロックデバイスを読み書きするにはどうすればよいですか?
#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);
}