سؤال ما هو تأثير CTRL + Z على تطبيق unix \ Linux


كنت أشعر بالفضول والارتباك لأن ما هو سلوك CTRl + Z هو بالضبط.

أعلم ، إذا كانت هناك عملية قيد التشغيل في المقدمة ، ونضغط على ctrl + z ، فسيتم الانتقال إلى الخلفية.

لكن ما يحدث بالضبط.

هل تستمر في القيام بهذا العمل ، أم أنها ستعلق ، وتتوقف عند النقطة التي كانت فيها.

وإذا توقفت عند هذه النقطة ، وما هو معنى الوظيفة في الخلفية.


72
2017-09-13 12:51


الأصل


لا يرسل Ctrl-Z عملية إلى الخلفية ، بل إنه يعلقها. - Wooble


الأجوبة:


"وظيفة الخلفية" هي مجرد واحدة لا تتفاعل مع المستخدم - فهي لا تتحكم في tty وتقوم فقط بأشياءها (بصمت بشكل عام). وظيفة المقدمة هي العكس ، فهي تتحكم في tty للتفاعل مع المستخدم.

يقوم Control-Z بتعليق أحدث عملية مقدمة (العملية الأخيرة للتفاعل مع tty) (إلا إذا كانت تلك العملية تأخذ خطوات لتجاهل التعليق ، مثلما تفعل القذائف عادة). هذا عادة ما يعيدك إلى صدفة الخاص بك ، والتي يمكنك من خلالها عموما إدخال الأمر bg لنقل العملية المعلقة للتو إلى الخلفية (السماح لها بالاستمرار في العمل) أو fg لإعادته إلى المقدمة.


57
2017-09-13 12:57



للتراجع عن عملية الخلفية مع fg أولا تحديد أي وظيفة عن طريق إصدار jobs   ثم قل إذا كانت٪ 1 يصدرها fb %1  وستستأنف العملية - Scott Stensland


الضغط على Ctrl + Z يرسل TSTP إشارة إلى العملية الخاصة بك. يؤدي هذا إلى إيقاف التنفيذ (لن تقوم kernel بجدولة أي وقت إضافي من وحدة المعالجة المركزية للعملية) وتنتظر العملية CONT لمتابعة المعالجة.

يمكنك محاكاة / تكرار هذا عبر kill -TSTP و kill -CONT (منذ kill سوف ترسل إشارة معينة إلى العملية الخاصة بك ، على الرغم من الاسم!)

يحتوي shell على وظيفة "الخلفية" العملية ، ولكن هذه هي العلاقة بين shell و العملية. العملية في حد ذاتها لا تملك حقا مفهوم "الخلفية" أو "المقدمة".

نرى هنا لمزيد من المعلومات.


48
2017-09-13 12:57



^Z يرسل SIGTSTP ، وليس SIGSTOP - William Pursell
تضمين التغريدة وأشار. تغيرت الآن. شكرا - Brian Agnew
كل شيء عن قاعدة الإشارة. شكرا لكم. - g10guang


النظر في هذا الأمر ، والذي يأخذ تقريبا. 4.5 ثانية على الكمبيوتر المحمول الخاص بي:

echo 2^10000000 | bc -lq | wc -c

عندما تضغط السيطرة+Z، سيتم تعليق الحساب. لديك خيار لاستئناف الحساب في المقدمة باستخدام fgأو استئنافها في الخلفية باستخدام bg. هذا الأخير يعادل تقريبا تنفيذ:

echo 2^10000000 | bc -lq | wc -c &

14
2017-09-13 13:02





يتم تعليق العملية وإيقافها عند الضغط على ctrl + z. مع fg يمكنك نقل المهمة المعلقة إلى المقدمة ، مع bg يمكنك تشغيلها في الخلفية.

نرى http://linuxreviews.org/beginner/jobs/ للمزيد من المعلومات.


8
2017-09-13 12:57