كيفية إغلاق واصف ملف من عملية أخرى في أنظمة يونكس

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

سؤال

ويمكنك استخدام القيادة على lsof لتحصل اصفات ملف لجميع العمليات الجارية، ولكن ما أود القيام به هو إغلاق بعض تلك اصفات دون أن يكون داخل تلك العملية. ويمكن القيام بذلك على ويندوز، لذلك يمكنك بسهولة افراج عن بعض التطبيقات.

هل هناك أي أمر أو وظيفة لذلك؟

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

المحلول

في ويندوز يمكنك استخدام برنامج لتفعل ذلك لأن أحدهم كتب برنامج إدراج برنامج تشغيل الجهاز في النواة تشغيل للقيام بذلك. بالمناسبة يمكن أن تكون خطيرة للقيام بذلك، لأنه بعد إغلاق المؤشر الذي طلب كسر كان يستخدم، لا يعرف التطبيق الذي مقبض تم إغلاق، وعند فتح التطبيق بعض وجوه أخرى غير ذات صلة أنها لا تعرف أن التعامل مع نفسه قد الآن تشير إلى بعض وجوه أخرى غير ذات صلة. كنت تريد حقا لقتل التطبيق كسر في أقرب وقت ممكن.

في لينكس بالتأكيد يمكنك استخدام نفس النوع من التقنية. كتابة برنامج الذي يدرج وحدة نمطية في النواة تشغيل. التواصل مع وحدة وأقول ذلك الذي يتعامل مع إغلاقه. وسوف تكون خطيرة بنفس القدر للقيام بذلك.

نصائح أخرى

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

في واحد قذيفة: القط

في قذيفة أخرى:

$pidof cat
7213

$gdb -p 7213

...
lots of output
...

(gdb)

والآن اقول لكم جدب لتنفيذ وثيقة (0):

(gdb) p close(0)

$1 = 0

(gdb) c

Continuing.

Program exited with code 01.
(gdb)

في وعاء الأولى أحصل على هذا الإخراج:

cat: -: Bad file descriptor

cat: closing standard input: Bad file descriptor

وأنا لا أعتقد ذلك ولكن lsof يمنحك PID العملية التي فتحت الملف، لذلك ما يمكنك القيام به هو قتل كليا العملية أو على الأقل إرسال إشارة إلى السماح لها الخروج.

وأنا أشك في ذلك. واصفات ملف هي محلية العملية، stdout هو 1 لجميع العمليات، إلا أنها ما زالت تشير إلى تيارات فريدة بطبيعة الحال.

ولعل مزيد من التفاصيل تكون مفيدة، حول مشكلة حظر كنت تحاول حلها.

وهناك أقل بكثير ضرورة قيام بذلك على يونيكس من Windows.

في ويندوز، وتميل معظم برامج "تأمين" (في الواقع تنفي مشاركة) الملفات التي فتح، بحيث لا يمكن قراءة / كتب / حذف من قبل برنامج آخر.

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

وحول الموقف الوحيد هذا يأتي في الاستخدام العادي في يونكس وعند محاولة umount نظام الملفات (أي إشارة على الإطلاق إلى الملفات التي شنت يمكن منع umount).

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