Avatar billede nuab Nybegynder
11. december 2002 - 12:23 Der er 16 kommentarer og
1 løsning

fang ctrl c i promt

Hvordan fanger jeg en ctrl c i et program som startes fra en promt. Kan man som i c++ fange den og ryde op efter sig.
Avatar billede nuab Nybegynder
11. december 2002 - 12:24 #1
Det er ikke noget GB kan klare, da det er en del af et distribueret system.
Avatar billede nuab Nybegynder
11. december 2002 - 12:26 #2
Jeg vil nemlig gerne fjerne mine referencer på namingservice, når applikationen break'es...
Avatar billede disky Nybegynder
11. december 2002 - 12:30 #3
Ja du registerer en finalization handler som gør det for dig, den bliver så kaldt når klassen bliver finaliseret af JVM'en

Kun ved et crash er der ingen garanti for udførsel.
Avatar billede carstenknudsen Nybegynder
11. december 2002 - 12:54 #4
disky: hvordan gør man det? Du refererer vel ikke
til finalize metoden, for den kaldes sjældent
om nogensinde på nogle systemer, hvad enten det
er en pæn nedlukning, eller en mere barsk en.
Avatar billede arne_v Ekspert
11. december 2002 - 13:19 #5
Finalize burde nu blive kaldt medmindre det er
en ret barsk nedlukning.

Det store problem ved finalize er efter min mening,
at de er unordered.

Jeg vil anbefale et shutdown hook i.s.f..

Det bruges også af en del "seriøse" applikationer.
Avatar billede arne_v Ekspert
11. december 2002 - 13:19 #6
Runtime addShutdownHook
Avatar billede carstenknudsen Nybegynder
11. december 2002 - 13:23 #7
arne_v: tak for oplysningen. Du er iøvrigt
netop ikke klar over om finalize bliver kaldt,
derfor anbefales det stærkt ikke at benytte
finalizer's til noget vigtigt, jeg har testet
det her hos mig, og jeg kan ikke forcere dem,
hverken med pæn eller grim nedlukning, men
det er naturligvis afhængigt af implementeringen.
Avatar billede arne_v Ekspert
11. december 2002 - 13:37 #8
carsten du har ret. Java language siger kun at finalizers
vil blive kaldt inden garbahe collection. Men den siger
ikke at garbage collection vil blive kaldt. Derfor...

Det bekræftes iøvrigt af eksistensen af Runtime runFinalizersOnExit !

Hvor man bemærker at default er false.

(den er også depracated fordi der er visse risici)
Avatar billede arne_v Ekspert
11. december 2002 - 13:39 #9
PS: Hvordan tester du om finalizer bliver kaldt ?
    (da de er unordered så kan System.out etc. vel godt
    være closed inden dine finalizers bliver kaldt !)
Avatar billede arne_v Ekspert
11. december 2002 - 13:40 #10
Så definitivt: shutdown hook.
Avatar billede carstenknudsen Nybegynder
11. december 2002 - 13:47 #11
arne_v: jeg åbner og skriver til en fil,
men den kommer ikke frem.
Avatar billede nuab Nybegynder
11. december 2002 - 13:47 #12
er der nogen der har lidt implementation?
Avatar billede carstenknudsen Nybegynder
11. december 2002 - 13:49 #13
Thread t = new Thread() {
  public void run() {
    // ryd op her
  }
}
Runtime.addShutDownHook(t);
Avatar billede carstenknudsen Nybegynder
11. december 2002 - 13:50 #14
Skulle have været:
Runtime.getRuntime().addShutDownHook(t);
Avatar billede nuab Nybegynder
11. december 2002 - 13:53 #15
Hvordan laver man et shutdown hook?
Avatar billede nuab Nybegynder
11. december 2002 - 13:54 #16
Tak for hjælpen carsten Knudsen
Avatar billede arne_v Ekspert
11. december 2002 - 13:57 #17
Det har Carsten lige vist:

Thread t = new Thread() {
  public void run() {
    // ryd op her
  }
}
Runtime.getRuntime().addShutDownHook(t);

men du kan også lave en klasse i en separat java fil:

public class MyShutdownHook extends Thread {
  public void run() {
      // code
  }
}

og så aktivere den med:

Runtime.getRunrime().addShutdownHook(new MyShutdownHook());
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB