යුනික්ස් විධාන රේඛාවේ Ctrl + Z සහ Ctrl + C අතර වෙනස කුමක්ද?


192

මම මැක් ඕඑස් එක්ස් ටර්මිනලය භාවිතා කරමි. සමහර වැඩසටහන් නැවැත්වීමට මම Ctrl+ Zහෝ Ctrl+ භාවිතා කරමි C. නමුත් ඔවුන් හරියටම කරන්නේ කුමක්දැයි මම නොදනිමි. ඒවා මොනවාද සහ ඒවා අතර ඇති වෙනස කුමක්ද?

මෙම ප්‍රශ්නය සතියේ සුපිරි පරිශීලක ප්‍රශ්නයක් විය . වැඩි විස්තර සඳහා
2011 මාර්තු 13 බ්ලොග් සටහන කියවන්න හෝ සතියේ ඔබේම ප්‍රශ්නය ඉදිරිපත් කරන්න .

Answers:


256

Control+ Zභාවිතා කරන්නේ ක්‍රියාවලිය අත්හිටුවීම සඳහා සං signal ාව යැවීමෙනි, එය SIGSTOPවැඩසටහනට බාධා කළ නොහැක. සං Control+ Cාව සමඟ ක්‍රියාවලියක් kill ාතනය කිරීමට + භාවිතා SIGINTකරන අතර, වැඩසටහනකින් එය වළක්වා ගත හැකි වන අතර එමඟින් පිටවීමට පෙර එහි පිරිසිදු කිරීම හෝ කිසිසේත් පිටවීම සිදු නොවේ.

ඔබ ක්‍රියාවලියක් අත්හිටුවුවහොත්, එය අත්හිටුවා ඇති බව ඔබට පැවසීමට මෙය කවචයේ පෙන්වනු ඇත:

[1]+  Stopped                 yes

කෙසේ වෙතත්, ඔබ එක් අයෙකු kill ාතනය කළහොත්, නැවත ෂෙල් විමසුමට දැමීම හැර වෙනත් තහවුරු කිරීමක් ඔබට නොපෙනේ. ඔබ ක්‍රියාවලියක් අත්හිටුවන විට, ඔබට එය සමඟ විසිතුරු දේවල් කළ හැකිය. උදාහරණයක් ලෙස, මෙය ක්‍රියාත්මක කිරීම:

fg

අත්හිටවූ වැඩසටහනක් සමඟ එය නැවත පෙරට ගෙන එනු ඇත.

සහ විධානය ක්‍රියාත්මක කිරීම

bg

අත්හිටවූ වැඩසටහනක් සමඟ එය පසුබිමේ ක්‍රියාත්මක වීමට ඉඩ සලසයි (වැඩසටහනේ ප්‍රතිදානය තවමත් TTY වෙත යනු ඇත).

අත්හිටවූ වැඩසටහනක් kill ාතනය කිරීමට ඔබට අවශ්‍ය නම්, ඔබට එය fgමුලින්ම ගෙන ඒමට අවශ්‍ය නැත , ඔබට සරලවම විධානය කළ හැකිය:

kill %1

ඔබට අත්හිටවූ විධාන කිහිපයක් තිබේ නම්, ධාවනය වේ

jobs

මේ වගේ ඒවා ලැයිස්තුගත කරයි:

[1]-  Stopped                 pianobar
[2]+  Stopped                 yes

භාවිතා %#, එහිදී #රැකියා අංකය (සිට කොටු වරහන් තුළ එක් jobsප්රතිදානය) සමග bg, fgහෝ kill, එම රැකියාව පිළිබඳ පියවර කරන්න කිරීම සඳහා භාවිතා කල හැක.


3
sttyවිධානය භාවිතා කිරීමෙන් කුමන යතුරු කරන්නේ කුමන යතුරුද යන්න ඔබට වෙනස් කළ හැකිය . උදාහරණයක් ලෙස stty susp ^Z හෝ stty intr ^C.
RedGrittyBrick

7
ඇත්ත වශයෙන්ම, එය SIGTSTP යවයි, එය වළක්වා ගත හැකිය.
සයිමන් රිච්ටර්

2
සිසිල්! Ctrl + C සමඟ වැඩසටහනක් මියයාම ප්‍රතික්ෂේප කරන්නේ නම් ඔබ එය මරා දැමීමට බල කරන්නේ කෙසේද?
ආදිත්‍ය පාර්ලිමේන්තු මන්ත්‍රී

2
ityadityamenon ක්‍රියාත්මක කළ හැකි නම සොයා ගන්න, උදාහරණයක් ලෙස amarokධාවනය කරන්න killall amarok, නැතහොත් ක්‍රියාත්මක ps auxකරන්න, ක්‍රියාත්මක කළ හැකි නමට යාබදව ක්‍රියාදාම හැඳුනුම්පත සොයාගෙන ධාවනය කරන්න kill {process id}.
ෆින්ගර්

24

Ctrl + Z SIGTSTP සමඟ ක්‍රියාවලිය අත්හිටුවයි, ඔබට පසුව එය නැවත ආරම්භ කළ හැකිය. Ctrl + C විසින් SIGINT සමඟ ක්‍රියාවලිය විනාශ කරයි, එය ඉලක්කය විසින් හසුරුවන්නේ / නොසලකා හරිනු නොලැබුවහොත් ක්‍රියාවලිය අවසන් කරයි, එබැවින් ඔබට එය නැවත ආරම්භ කළ නොහැක. සිග්ස්ටොප් එකක් ද එවිය හැකි kill()අතර එය ක්‍රියාවලියට බාධා කළ නොහැක. SIGCONT යනු SIGSTOP සහ SIGTSTP යන දෙකටම ප්‍රතිවිරුද්ධ පාර්ශවයයි.


නැත, එය SIGTSTP මිස SIGSTOP නොවේ, එය වළක්වා ගත හැකිය.
sch

chsch, දැන් එය නිවැරදි ද?
බෙන් වොයිග්ට්

ඔව්, Ctrl-Z (සහ CTRL-C) මඟින් ක්‍රියාවලි සමූහයකට (පර්යන්තයේ පෙරබිම් ක්‍රියාවලි කණ්ඩායම) එම සං signal ාව ලැබීමට හේතු වේ, අවශ්‍යයෙන්ම එක් ක්‍රියාවලියක් පමණක් නොවේ. SIGTTIN සහ SIGTTOU ටර්මිනලයේ පෙර සැකසුම් කාණ්ඩයට අයත් නොවන ක්‍රියාවලීන් වෙත යවා ඇති අතර පසුව එය කියවීමට හෝ ලිවීමට උත්සාහ කරන විට ඒවා අත්හිටුවනු ඇත.
sch

chsch: ක්‍රියාවලිය එදිරිව කණ්ඩායම සං the ාව යවන ආකාරයෙහි වෙනසක් නොවේද? IIRC kill()ඔබට SIGSTOPකණ්ඩායමක් වෙත යැවීමට ඉඩ දෙයි .
බෙන් වොයිග්ට්

ඔව්, මගේ විධානය වූයේ ඔබේ CTRL-Z ක්‍රියාවලිය අත්හිටුවීමයි ... එය ඇත්ත වශයෙන්ම රැකියාවක් හෝ ක්‍රියාවලි කණ්ඩායමක් වන විට එය එක් ක්‍රියාවලියකට යවනු ඇතැයි සිතීමට මිනිසුන් නොමඟ යවයි .
sch

18

CTRL + Z රැකියාවක් නතර කරයි (විරාම කරයි)

CTRL + C රැකියාවක් අවසන් කරයි

CTRL + C සමඟ ඔබට ක්‍රියාවලිය නැවත ආරම්භ කළ නොහැකි නමුත් CTRL + Z සමඟ ප්‍රොම්ට් විධානයට ඇතුල් වීමෙන් කාර්යය නැවත ආරම්භ කළ හැකිය:

fg %1

ඔබට බහුවිධ ක්‍රියාදාමයන් විරාමයක් තිබේ නම් ඔබ කළ යුතුය

jobs

ප්‍රතිදානය බැලීමට සහ නැවත ආරම්භ කිරීම සඳහා සුදුසු අංකය තෝරන්න

fg %3

ලැයිස්තුවේ තුන්වන රැකියාව නැවත ආරම්භ කරයි. ඔබට පසුබිමේ ධාවනය වන රැකියා ද තිබිය හැකිය

bg %n

මෙහි n යනු රැකියා අංකයයි.


එය රැකියා (ක්‍රියාවලි කණ්ඩායම්) මිස CTRL-C, CTRL-Z, fg සහ bg සමඟ ගනුදෙනු කරන ක්‍රියාවලීන් නොවේ.
sch

3
Cntrl + Z pause the currently running process. 

හා

Cntrl + C simply terminates the running process.

Cntrl + C භාවිතා කිරීමෙන් ඔබට ක්‍රියාවලිය නැවත ආරම්භ කළ නොහැක. Cntrl + Z භාවිතා කරන විට ඔබට ක්‍රියාවලිය නැවත ආරම්භ කළ හැකිය.

ක්‍රියාවලිය නැවත ආරම්භ කිරීමට fg% 1 භාවිතා කරන්න.


3

CTRL+ Zරැකියාවක් නවත්වයි (විරාමයක් දෙයි)

CTRL+ Cරැකියාවක් අවසන් කරයි

CTRL+ සමඟ Cඔබට ක්‍රියාවලිය නැවත ආරම්භ කළ නොහැක, නමුත් CTRL+ සමඟ + Zවිධාන විමසුමට ඇතුලත් කිරීමෙන් කාර්යය නැවත ආරම්භ කළ හැකිය:

fg% 1

ඔබට බහු ක්‍රියාදාමයන් විරාමයක් තිබේ නම් ඔබ කළ යුතුය

රැකියා

ප්‍රතිදානය බැලීමට.


2

පෙර පිළිතුරු නිවැරදි ය, නමුත් කිසියම් නොදන්නා හේතුවක් නිසා Ctrl-Z සියළුම ළමා ක්‍රියාදාමයන් ද අත්හිටුවයි, නමුත් කිල්ලාල්-සිග්ස්ටොප් ... ඉදිරිපස (මව්) ක්‍රියාවලිය අත්හිටුවා ළමයින්ට කැමති පරිදි ධාවනය කිරීමට ඉඩ දෙයි.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.