|
| Ctrl/C og Ctrl/Z Fra : Morten Lehrmann |
Dato : 18-01-01 18:15 |
|
Hvorfor er Ctrl/Z bedre til at afbryde en kørende forgrundssproces end Ctrl/C ?
Ofte kan jeg ikke afbryde med Ctrl/C, men må i stedet bruge Ctrl/Z og kill fra kommandolinien.
Hvordan virker de to tastsekvenser mere teknisk (fx hvilke kill-signaler sender de)?
Mvh
Morten
| |
news.sunsite.dk (18-01-2001)
| Kommentar Fra : news.sunsite.dk |
Dato : 18-01-01 19:35 |
|
> Hvorfor er Ctrl/Z bedre til at afbryde en kørende forgrundssproces end
Ctrl/C ?
Det er svjv 2 forskellige ting de gør...
> Ofte kan jeg ikke afbryde med Ctrl/C, men må i stedet bruge Ctrl/Z og kill
fra kommandolinien.
ctrl-z ligger processen i baggrunden... du får et nummer når du trykker
ctrl-z midt i et program... processen bliver vidst lagt i dvale. Så kan du
bruge kommandoen fg til at hitte den frem igen... se kommandoerne fg
(foreground),bg (background) og jobs.
ctrl-c afbryde processen helt.
/Danni
| |
Zurfer (19-01-2001)
| Kommentar Fra : Zurfer |
Dato : 19-01-01 10:17 |
|
In article <oHG96.41880$W81.443355@twister.sunsite.dk>, "news.sunsite.dk"
<danni@finne.dk> wrote:
> ctrl-z ligger processen i baggrunden... du får et nummer når du trykker
> ctrl-z midt i et program... processen bliver vidst lagt i dvale. Så kan
> du bruge kommandoen fg til at hitte den frem igen... se kommandoerne fg
> (foreground),bg (background) og jobs.
Er der ikke en ctrl-etellerandet til at fortsætte med at køre processen
så man kan komme til at skrive i sin prompt igen...eller skal man trykke
ctrl-z og så skifte processen med fg .??
Kenneth
| |
Rasmus Bøg Hansen (19-01-2001)
| Kommentar Fra : Rasmus Bøg Hansen |
Dato : 19-01-01 14:34 |
|
On Fri, 19 Jan 2001, Zurfer wrote:
> In article <oHG96.41880$W81.443355@twister.sunsite.dk>, "news.sunsite.dk"
> <danni@finne.dk> wrote:
>
> > ctrl-z ligger processen i baggrunden... du får et nummer når du trykker
> > ctrl-z midt i et program... processen bliver vidst lagt i dvale. Så kan
> > du bruge kommandoen fg til at hitte den frem igen... se kommandoerne fg
> > (foreground),bg (background) og jobs.
>
> Er der ikke en ctrl-etellerandet til at fortsætte med at køre processen
> så man kan komme til at skrive i sin prompt igen...eller skal man trykke
> ctrl-z og så skifte processen med fg .??
ctrl-z sender et STOP signal til processen. Dette kan ikke famges af
processen, hvorfor den altid vil virke (medmindre den hænger meget længe
i et eller andet kernekald). For at bringe den frem igen skal den have
et CONT signal - og der SVJH ingen shells, der implementerer dette som
et ctrl+?...
INTR - interrupt -(som CTRL sender) kan fanges og ignoreres af
programmet. Gør den dette, kan det ikke afbrydes med ctrl+c. KILL (kill
-9) kan dog ikke fanges, så vejen frem for at afslutte et dødt program,
der ikke reagerer på ctrl+c er desværre kun ctrl+z og kill -9 (eller
evt. kill -9 fra en anden shell - eller fra en eller anden grafisk
ting).
Rasmus Bøg Hansen
| |
Thorbjørn Ravn Ander~ (19-01-2001)
| Kommentar Fra : Thorbjørn Ravn Ander~ |
Dato : 19-01-01 15:31 |
|
Rasmus Bøg Hansen wrote:
> ctrl-z sender et STOP signal til processen. Dette kan ikke famges af
> processen, hvorfor den altid vil virke (medmindre den hænger meget længe
> i et eller andet kernekald). For at bringe den frem igen skal den have
> et CONT signal - og der SVJH ingen shells, der implementerer dette som
> et ctrl+?...
Joda. Prøv fx at taste Ctrl-Z i Emacs.
> INTR - interrupt -(som CTRL sender) kan fanges og ignoreres af
> programmet. Gør den dette, kan det ikke afbrydes med ctrl+c. KILL (kill
> -9) kan dog ikke fanges, så vejen frem for at afslutte et dødt program,
> der ikke reagerer på ctrl+c er desværre kun ctrl+z og kill -9 (eller
> evt. kill -9 fra en anden shell - eller fra en eller anden grafisk
> ting).
Zombies kan ikke kildes. De er nemlig allerede døde. Bare lige for en
god ordens skyld så står de med "Z" i ps.
--
Thorbjørn Ravn Andersen "...sound of...Tubular Bells!"
http://bigfoot.com/~thunderbear
| |
Rasmus Bøg Hansen (19-01-2001)
| Kommentar Fra : Rasmus Bøg Hansen |
Dato : 19-01-01 17:43 |
|
On Fri, 19 Jan 2001, Thorbjørn Ravn Andersen wrote:
> Rasmus Bøg Hansen wrote:
>
> > ctrl-z sender et STOP signal til processen. Dette kan ikke famges af
> > processen, hvorfor den altid vil virke (medmindre den hænger meget længe
> > i et eller andet kernekald). For at bringe den frem igen skal den have
> > et CONT signal - og der SVJH ingen shells, der implementerer dette som
> > et ctrl+?...
>
> Joda. Prøv fx at taste Ctrl-Z i Emacs.
Emacs er jo heller ikke en terminalemulator. Terminalemulatoren (f.
eks. xterm) fanger ctrl-z og sender stop-signal til forgrundsprocessen i
terminalvinduet. Det gør X ikke.
Men jeg tilstår; det er ikke ens shell, der fanger ctrl+z - den rykker
bare sig selv til forgrunden, når dens barneproces bliver stoppet. Måske
man kan sætte xterm op til at fortolke et ctrl+? som et CONT signal?
> > INTR - interrupt -(som CTRL sender) kan fanges og ignoreres af
> > programmet. Gør den dette, kan det ikke afbrydes med ctrl+c. KILL (kill
> > -9) kan dog ikke fanges, så vejen frem for at afslutte et dødt program,
> > der ikke reagerer på ctrl+c er desværre kun ctrl+z og kill -9 (eller
> > evt. kill -9 fra en anden shell - eller fra en eller anden grafisk
> > ting).
>
> Zombies kan ikke kildes. De er nemlig allerede døde. Bare lige for en
> god ordens skyld så står de med "Z" i ps.
Korrekt. Nu tænkte jeg nu også mest på almindelige kørende processer -
ikke processer, der hænger i et langt, blokerende systemkald eller
zombier.
Rasmus Bøg Hansen
| |
frank damgaard (18-01-2001)
| Kommentar Fra : frank damgaard |
Dato : 18-01-01 18:55 |
|
Morten Lehrmann <mle000@lehrmann.dk> wrote:
> Hvorfor er Ctrl/Z bedre til at afbryde en kørende forgrundssproces end Ctrl/C ?
> Ofte kan jeg ikke afbryde med Ctrl/C, men må i stedet bruge Ctrl/Z og kill fra kommandolinien.
> Hvordan virker de to tastsekvenser mere teknisk (fx hvilke kill-signaler sender de)?
Ctrl-Z er ofte sæt i stå / suspend (men ikke afbryd)
og Ctrl-C er "intr"
Se stty -a
speed 9600 baud; rows 30; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
.....
Men programmer kan vælge at undlade at reagere på visse signaler.
(dog ikke kill -9 !)
Eller der skal laves noet oprydning når programmet modtager "intr".
Ved Ctrl-Z er oprydning måske ikke nødvendig men hvis der skal laves
noget ved afslut (måske netværksrelateret) og det hænger, så er det
måske problemet opstår?
--
Frank Damgaard
| |
|
|