フォークで飛び込んだプロセスがあります。各プロセスの計算結果用のメモリ領域 (行列) を作成する必要があります。これどうやってするの?私が試したものすべて、または使用できますが、プロセス間で共有されていないか、使用できません(共有されているかどうかはわかりません)。誰かが私が何を使うことができるか知っていますか? シンプルでセキュリティのないものにすることができます。シンプルなほど良い。試してみましたが、共有されておらず、正しく割り当てまたは使用するshmget
方法がわかりませんでした。mmap
私は他の疎遠なことを試しましたが、何もしませんでした。任意のヒント?
いくつかの試み:
segment_id = shmget(IPC_PRIVATE, (sizeof(int) * linhas_mat1 * colunas_mat2) , S_IRUSR|S_IWUSR);
matriz_result = (int **) shmat(segment_id, NULL, 0);
フォークはその後。各プロセスは、matriz_result
通常はマトリックスとして使用できますが、メモリは共有されません。それぞれがローカル変数のようなものを持っています。
segment_id = shm_open("/myregion", O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
matriz_result = mmap(NULL, (sizeof(int) * linhas_mat1 * colunas_mat2), PROT_READ | PROT_WRITE, MAP_SHARED, segment_id, 0);
mmapでこれを試しましたが、正しいかどうかわかりません。私はそのような低レベルのプログラミングが苦手で、正しく使用する方法の良い例を見つけることができませんでした.
宣言:
int segment_id is;
int **matriz_result;