मुझे 2 प्रक्रियाएं (क्लाइंट और सर्वर) मिलती हैं जो साझा स्मृति के माध्यम से संचार कर रही हैं।सी - 2 डी गतिशील ऐरे (डबल पॉइंटर) - साझा मेमोरी
मुझे एक 2 डी ऐरे बनाने की आवश्यकता है जो गतिशील (पैरामीटर के आधार पर) है। सरणी को एक स्ट्रक्चर में संग्रहीत किया जाता है और फिर साझा सेगमेंट में लिखा जाता है।
मैं साझा स्मृति में सरणी लिख सकता हूं, लेकिन इसे अन्य प्रक्रिया से पुनर्प्राप्त नहीं कर सकता।
क्लाइंट कोड:
struct shared_use_st {
int written_by_you;
int **PID_PRI_array;
};
/* Prepare Dynamic 2D array */
data_store = malloc(/*ROWS*/ 5 * sizeof(int*));
for(i=0;i<5; i++)
data_store[i] = malloc(/*COLS*/ 2 * sizeof(int));
/* Prepare Dynamic 2D array - Shared Memory Seg */
shared_stuff->PID_PRI_array = malloc(/*ROWS*/ 5 * sizeof(int*));
for(i=0;i<5; i++)
shared_stuff->PID_PRI_array[i] = malloc(/*COLS*/ 2 * sizeof(int));
/* Write PID and PRI to data_store array */
data_store[0][0] = pid;
data_store[0][1] = 1;
data_store[1][0] = 12345;
data_store[1][1] = 2;
data_store[2][0] = 12346;
data_store[2][1] = 3;
data_store[3][0] = 12347;
data_store[3][1] = 4;
data_store[4][0] = 12348;
data_store[4][1] = 5;
for(i=0;i<5;i++){
for(x=0;x<=1;x++){
shared_stuff->PID_PRI_array[i][x] = data_store[i][x];
}
}
सर्वर कोड:
for(i=0;i<5;i++){
printf("PID: %d, PRI:%d\n", shared_stuff->PID_PRI_array[i][0], shared_stuff->PID_PRI_array[i][1]);
}
मैं एक "विभाजन दोष" त्रुटि मिलती है।
धन्यवाद।
साझा स्मृति पता दोनों प्रक्रियाओं में एक ही है? यदि ऐसा नहीं है, तो पॉइंटर्स काम नहीं करेंगे। –
हां वे वही हैं :) –