Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Chiamate di Sistema:avvio di un processo

    Salve.
    Esiste in java un sistema per gestire le chiamate di sistema come avviare un processo e stopparlo?
    ipotizzanto che il comando da shell sia

    #motion

    come posso invocare questo processo?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    "Non esiste" in Java nulla di simile. Poichè Java deve rimanere indipendente dal Sistema su cui gira non può inventarsi una chiamata di sistema.
    Ho messo le virgolette perchè è comunque sempre possibile avviare un programma (processo) tramite la chiamata al metodo exec() della classe Runtime. Tramite questo è possibile, ad esempio sotto Windows, invocare il comando "dir" nel seguente modo:
    codice:
    String[] comando = {"cmd.exe", "/c", "dir"};
    Runtime.getRuntime().exec( comando );
    Allo stesso modo, un "ls" su Linux in questo modo:
    codice:
    String[] comando = {"/bin/bash", "-c", "ls"};
    Runtime.getRuntime().exec( comando );
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    forse qui trovi una risposta...
    stex1984

  4. #4
    Lele esiste anche qualcosa per chiudere il programma?
    Nel mio caso è un programma che va in backgroun quindi l'unico modo per bloccarne l'esecuzione forse è un kill. Grazie per aver riportato la soluzione linux:-)

    Adesso mi adopero a leggere l'altra soluzione!

  5. #5
    Perfetta anche la seconda soluzione. Se non conosco il comando per stoppare il processo, posso comunque stopparlo?
    Mi sa di no . . .

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    La soluzione del kill è senza dubbio funzionante (a patto di conoscerne il PID).
    Una soluzione alternativa (mai provata, però) è quella di utilizzare il metodo destroy() della classe Process.
    L'oggetto Process è quello che viene restituito dal metodo exec() di Runtime:
    codice:
    Process p = Runtime.getRuntime().exec( comando );
    ...
    p.destroy();
    Stando alle API:
    destroy(): Kills the subprocess.
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da pierets
    per info venite qui--> AIUTO
    A parte il fatto che il link non porta a nulla...
    1) Usare del testi più esplicativi, sarebbe preferibile, a mio avviso
    2) Ha a che fare con quello di cui si parla nella discussione? Dal nome direi proprio di no.
    3) Se la supposizione di cui al punto 2 è confermata... il moderatore non tarderà a farsi sentire.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Forse lele hai sbagliato forum!
    Cmq ho risolto intervenendo con kill -9 PID. Il PID lo ricavo elaborando l'output di ps -aux.

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da PinoAntonino
    Forse lele hai sbagliato forum!
    Cmq ho risolto intervenendo con kill -9 PID. Il PID lo ricavo elaborando l'output di ps -aux.
    Non avevo sbagliato forum... ho informato il moderatore che probabilmente ha rimosso il post (nota: c'è un quote)

    Infatti, conoscendo il PID, la via più breve è senz'altro il kill -9. Anch'io a suo tempo avevo adottato questa soluzione: lanciavo uno script (perchè la cosa era un po' più complessa) e prendevo a killare tutti i processi che venivano infilati in un file...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    Io prendo il PID in modo dinamico in quanto nn è sempre lo stesso.
    ps -aux lo metto in un file e lo scorro. cerco il nome del pprogramma e carico il PID.
    Ciao a risentirci

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.