سؤال

في userspace لينكس لدي عملية حظر على إشارة ، كما وجدت من قبل strace.عندما تحدث حالة خطأ ، ومنع تكرارها ، لذلك يجب أن يكون هناك عملية أخرى أن يحمل إشارة ولم الإفراج عنها.

هل هناك طريقة لمعرفة أي عملية أخرى حاليا عقد إشارة?

ipcs يسرد إشارة لا /proc/sysvipc/sem.أين يمكنني العثور على معلومات حول إجراء العملية ؟

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

المحلول

وأعمدة الإشارة ليست كائنات المزامنة. كنت لا "عقد" لهم. إذا تم حظر هذه العملية، وهذا يعني انها تنتظر لشخص آخر للقيام "حتى" أو "V" عملية على ذلك في المستقبل. ليس هناك أداة النواة التي سوف اقول لكم ما هي السلوك المستقبلي للبرنامج سيكون.

نصائح أخرى

قد يكون هناك طريقة أسهل ولكن يمكنك استخدام semctl () الاتصال مع GETPID كمد. يجب أن تعود العملية التي نفذت دعوة semop الماضي () للإشارة. هذا قد يكون أو لا يكون عملية مارقة الخاص بك ولكن من المحتمل أن يكون إشارة جيدة.

لتجد PIDS المرتبطة قائمة سيمافور صالحة المدرجة من قبل ipcs -s يمكنك تشغيل هذا:

for pid in $( for semid in $( sudo ipcs -s | awk '/0x/{ print $2 }' ); do sudo ipcs -s -i $semid | tail -2 | head -1 | awk '{print $5}'; done | sort -u ); do ps uh -p $pid; done

"البرنامج الدولي للسلامة الكيميائية -p" لا يمكن أن تظهر الإشارات من عملية الحجز يجب أن يكون علة ، أو أنه حد لأن من الصعب أن تظهر.يجب أن الاستعلام عن طريق دلل نفسك خلال.

  1. تشغيل "البرنامج الدولي للسلامة الكيميائية -s" للحصول على كل semid
  2. لكل semid تشغيل "البرنامج الدولي للسلامة الكيميائية -s-i"
  3. لكل semnum ، للحصول على مالك pid ، إذا كان المالك pid هو كنت ترغب ، ثم تظهر الحالي semid و semnum.

ملاحظة:إذا كانت العملية مجرد قراءة الإشارات ، ثم قد لا يمكن الحصول على هذه المعلومات من خلال البرنامج الدولي للسلامة الكيميائية الأوامر.

هل جربت

ipcs -p
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top