共有メモリを介して構造体を送信できますが、myStructure [SIZE]を送信したい場合はどうすればいいですか?Cでmmapのベクトルを共有
私はこれを整数のベクトルで試しています。私のような何かを行う場合は今
int fd, data_size = VECSIZE*sizeof(int), i, numbers[VECSIZE];
int *number;
fd = shm_open("/ex02_1100620", O_CREAT | O_EXCL | O_RDWR, S_IRUSR | S_IWUSR);
ftruncate(fd, data_size);
number = numbers;
srand((unsigned) time(NULL));
for(i = 0; i < SIZE; i++){
number[i] = rand()% SIZE + 1;
}
number = (int *)mmap(NULL, data_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
:
number = numbers
をして、それが動作number[SIZE]
位置を印刷するが、私はmmapの後number[SIZE]
を印刷する場合、それはすべて0を印刷し、私の問題は、ここでは作家で開始します読者も同じことをしています。
私はそれをしますが、私の問題を説明するためにエラーをキャッチすることは本当に必要ではないと思います。
私はこの投稿を読んでいますSharing an array of structs using mmapしかし、私が間違っていることを理解できませんでした。
コードに関する詳細情報が必要な場合は、それだけです。
あの、ここで筆者はには何も書いていません共有メモリ? – immibis
それは私が問題を抱えているところです。私は数字を使い、数字を忘れるべきですか? これは、number = numbersの代わりにmallocを使用するべきではない場合ですか?そして、それはmmap呼び出しでどのように動作するでしょうか? – AimForNuts
共有メモリに何も書いていないのは、あなたがそれをするように言わなかったからです - あなたは 'numbers'を指すように' number'を設定し、 'number'を通して数の束を書きます'numbers'配列)、いくつかの共有メモリをマップし、共有メモリを指すように' number'を設定します。あなたは実際に共有メモリに書き込みませんでした。 – immibis