मैं एक struct है:सी में साझा स्मृति (shmget/shmat) को कैसे संशोधित करें?
size_t shmsize = sizeof(struct sdata);
shmid = shmget(IPC_PRIVATE, shmsize, IPC_CREAT | 0666);
तो मैं इस तरह साझा स्मृति का उपयोग:
struct sdata *data = shmat(shared.shmid, (void *) 0, 0);
data->time = time(NULL); // function returns the current time
मेरा प्रश्न है
struct sdata {
int x;
int y;
time_t time;
};
इस प्रकार मैं struct के लिए साझा स्मृति बनाने बहुत साधारण। क्या साझा स्मृति को एक्सेस/संशोधित करने का यह सही तरीका है? क्या यह सबसे अच्छा तरीका है?
(मैं तुल्यकालन के लिए सिस्टम वी सेमाफोर का उपयोग कर रहा हूँ और मैं तो नहीं डाला है कोड। मैं सिर्फ यकीन है कि मुझे तक पहुँचने हूँ/साझा स्मृति को संशोधित करने के लिए सही ढंग से बनाना चाहते थे।)
यदि अन्य प्रक्रिया 'कांटा() 'ed है, तो आईपीसी_PRIVATE के साथ कोई समस्या नहीं है जब तक कि साझा स्मृति' फोर्क()' से पहले बनाई गई हो। हालांकि, चेतावनी अधिक सामान्य मामले में मान्य है। –