سرد الكائنات الذاكرة المشتركة على سولاريس بالاسم

StackOverflow https://stackoverflow.com/questions/1638799

سؤال

ويمكنني استخدامها الدولي للسلامة الكيميائية (1) إلى قائمة من النشطة الكائنات الذاكرة المشتركة على مربع سولاريس 10، ولكن وهو يسرد لهم من قبل المفتاح. أنا فتح الكائنات عبر shm_open (3)، على الرغم من، والتي تأخذ سلسلة أحرف كاسم لتعريف الكائن. هل هناك طريقة لسرد الكائنات الذاكرة المشتركة بالاسم، أو لمجرد الحصول على مفتاح <-> تعيين اسم؟ أنا مهتم في الغالب في شيء لتشغيلها من سطر الأوامر، على الرغم من أن API للقيام بذلك سيكون موافق أيضا. شكرا!

هل كانت مفيدة؟

المحلول

وبقدر ما أتذكر يظهر POSIX الذاكرة المشتركة تحت سولاريس على نظام الملفات إما مباشرة تحت /tmp/ كملفات .SHMDxxx أو تحت /var/tmp/.SHMD/. هذا قد أو قد لا تساعدك وأنا لم يكن لديك مربع سولاريس مفيد للتحقق من صحة.

نصائح أخرى

وأنا لا أعرف من وسيلة لإدراج أسماء أو الحصول على تعيينات مفتاح / الاسم. ولكن أعتقد أنني أعرف لAPI من شأنها أن تحل مشكلتك.

وأعتقد أنك يمكن أن نعلق على قطعة من المفتاح باستخدام واجهة نظام V، والذي هو أيضا API POSIX. وأعتقد أن الطريقة التي يعمل شيء مثل:

int attach_shmem(key_t key, void** pp){
    void* p;
    int id;

    id = shmget(key, 0, 0);
    if (id < 0) {
        perror("shmget");
        return ERR_SHMGET;
    }
    p = shmat(id, 0, 0);
    if ((long)p == -1) {
        perror("shmat");
        return ERR_SHMAT;
    }
    *pp = p;
    return 0;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top