0
この問題では、here誰かがファイルを使ってビットシフトを行う方法を尋ねましたが、推奨される方法はmmapを使用することでした。Mmapはファイルの内容にアクセスして算術演算を実行します
は今、これは私のmmapです:私はMMAP内のデータにアクセスする方法を
#include <errno.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <signal.h>
extern int errno;
int main(int argc, char *argv[]) {
int fd;
void *mymap;
struct stat attr;
char filePath[] = "test.txt";
fd = open(filePath, O_RDWR);
if (fd == -1) {
perror("Error opening file");
exit(1);
}
if(fstat(fd, &attr) < 0) {
fprintf(stderr,"Error fstat\n");
close(fd);
exit(1);
}
mymap = mmap(0, attr.st_size, PROT_READ|PROT_WRITE, MAPFILE|MAP_SHARED, fd, 0);
if(mymap == MAP_FAILED) {
fprintf(stderr, "%s: Fehler bei mmap\n",strerror(errno));
close(fd);
exit(1);
}
if (munmap(0,attr.st_size) == -1) {
fprintf(stderr, "%s: Error munmap\n",strerror(errno));
exit(0);
}
if (close(fd) == -1) {
perror("Error while closing file");
}
exit(0);
}
?どのようにして乗算や加算やsubstactionなどのビットシフトやその他の算術演算を実行できますか?
ありがとうございます!