PID programu

0

Witam,

w jaki sposób sprawdzić czy dany program jest uruchomiony/czy dany pid istnieje? (pod windowsem)
nie zaprzęgając do tego .exec ?

0

Bardzo czesto robi sie to w taki sposob ze gdziestam na boku tworzysz plik z pidem, albo otwierasz socketa ktory swiadczy ze program jest uruchomiony, rozne takie. Z Javy bez uzycia kodu natywnego nie wyszukasz po pidzie, no chyba ze wywolasz ps (linux, cygwin), ale to wymagaa exec() ktorego nie chcesz.

0

Przeszukiwałem (wydaje mi się że bardzo skrupulatnie) Java Glossary i nie znalazłem rozwiązania.. szkoda..
Dlaczego nie exec, a no dlatego, że nie potrafię pewnie z niego korzystać. Mianowicie kiedy wykonuję jakieś polecenie choćby .excec("tasklist"); to nie umiem sprawdzić czy polecenie wykonało się prawidłowo czy też nie. W tym cały ból mój...

dziękuje za odp.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

No bo exec() powoduje tylko uruchomienie pewnego procesu ;)
Ty potrzebujesz raczej czegoś w stylu popen()


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
0

exec() zwraca obiekty typu Process, ktory mozna uzyc do zablokowania az sie caly proces wykona (waitFor()) albo pobrania strumieni in / out / err.

lipkerson
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 2 lata
0

::. dobrze pisze

Dajesz np

    Runtime rt = Runtime.getRuntime();
    Process proc;
    proc = rt.exec("cmd /C date " + datestr);

A potem masz dostęp do metod

proc.getErrorStream()
proc.getInputStream()
proc.getOutputStream()


Another jam from the world for the jam from the voices of the world......
0

Dziękuje Panowie za odpowiedzi. Z góry założyłem, że się nie da nie doczytując dokumentacji nt. .exec.
I faktycznie Wasze uwagi okazały się trafne..

Przykład:

Kopiuj
    private Integer sharePointUser(String username) {
      Runtime r = Runtime.getRuntime();
      Process p = null;
      try {
          p = r.exec("c:\\windows\\system32\\net.exe use O: \\\\192.168.1.2\\www\\"+username+" xyz /USER:backupuser");
          p.waitFor();
          if(p.exitValue() != 0) {
            return 1;
          }
          return 0;
      } catch (Exception e) {
          //System.out.println("error executing " + cmd[0]);
      }
      return 1;
    }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.