私はdevice file can be accessed directly in Linuxを見ましたが、試してみたいです。私はファイルシステムのないフリーのディスクパーティションを持っています。私のテストコードは以下の通りです。 2回目にプログラムを実行すると、出力read data: 199
が得られます。しかし、実際には、出力はread data: 0
です。プログラム中にエラーは発生しません。どこが間違っているのか分かりません。
お時間をありがとうございます。デバイスファイルにアクセスするCプログラムが動作しません
テストコード:
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
int main(){
int num = 0;
int fd = open("/dev/sda6", O_RDWR);
if(fd == -1){
fprintf(stderr, "open device failed, errno : %s(%d) \n",
strerror(errno), errno);
return 1;
}
ssize_t ret = read(fd, &num, sizeof(int));
if(ret != sizeof(int)){
fprintf(stderr, "read fails, errno : %s(%d) \n",
strerror(errno), errno);
return 1;
}
printf("read data: %d\n", num);
num = 199;
ret = write(fd, &num, sizeof(int));
if(ret != sizeof(int)){
fprintf(stderr, "write fails, errno : %s(%d) \n",
strerror(errno), errno);
return 1;
}
close(fd);
return 0;
}