Wywoływanie programu kilka razy, zachowanie jednego procesu (?)

Odpowiedz Nowy wątek
2019-02-12 21:25
0

Cze.

Jest to pytanie z serii nie do końca wiem o co pytam.

Mianowice uruchamiając program uruchamiamy nowy proces i tak możemy w kółko (oczywiście nie uwzględniając limitu pamięci).
Jednak chciałbym napisać program w taki sposób, żeby uruchamiając go po prostu szła do niego nowa porcja inputu, a proces był dalej ten sam.
Coś w stylu:

...
bool tasksCompleted = false;
...
while !tasksCompleted{
    input = waitForNewInputFromSystem();
    launch_new_thread(HandleInput, input);
}

Jeśli wiecie o co mi chodzi, to prosiłbym o naprostowanie mojego problemu i wskazanie czy coś takiego jest możliwe, oraz jak to osiągnąć.

Z góry dziękuję.
Pozdrawiam.

PS
chodzi o wywoływanie z konsoli z argumentami lub z skrótu


"Jesteśmy karłami, którzy wspięli się na ramiona olbrzymów. W ten sposób widzimy więcej i dalej niż oni, ale nie dlatego, ażeby wzrok nasz był bystrzejszy, lub wzrost słuszniejszy, ale dlatego, iż to oni nas dźwigają w górę i podnoszą o całą gigantyczną wysokość" ~ Bernard z Chartes
edytowany 2x, ostatnio: PrezesiQ, 2019-02-12 21:53

Pozostało 580 znaków

2019-02-12 21:30
0

po prostu nasluchuj zmian (zdarzenia, plik, co tam chcesz)

program dziala caly czas w tle i powiedzmy co sekunde sprawdza czy jest cos nowego w folderze incoming jezeli jest to przetwarza, jezeli nie to nic nie robi. W obu przypadkach (po przetworzeniu lub nic nie robieniu) program czeka nadal sekunde

o to Ci chodzilo?

Pozostało 580 znaków

2019-02-12 21:38
0

Nie, może sprecyzuję.

Wywołując program np. z konsoli lub klikając startuje nowy proces. I chciałbym, żeby przy ponownym uruchomieniu nie uruchomił się kolejny proces tego programu, tylko input został do niego przekazany (no w tym przypadku to miałoby to sens tylko w przypadku konsoli, lub skrótu).
Czyli:

>do_cool_stuff a b c - startuje jeden proces, do którego został przekazany input, on sobie coś tam robi
>do_cool_stuff x y z - dalej mamy jeden proces, został przekazany NOWY input. Nie jest tworzony nowy proces.

"Jesteśmy karłami, którzy wspięli się na ramiona olbrzymów. W ten sposób widzimy więcej i dalej niż oni, ale nie dlatego, ażeby wzrok nasz był bystrzejszy, lub wzrost słuszniejszy, ale dlatego, iż to oni nas dźwigają w górę i podnoszą o całą gigantyczną wysokość" ~ Bernard z Chartes
edytowany 4x, ostatnio: PrezesiQ, 2019-02-12 21:54

Pozostało 580 znaków

2019-02-12 22:25
0

coś podobnego robiłam w programie windowsowym, przy uruchamianiu findwindow,ijak znalazł to przesyłał mu komunikat

można bardziej spójnie i po polsku? - PrezesiQ 2019-02-12 22:28
kocioł garnkowi? - Miang 2019-02-12 22:29
Przepraszam? To co ja napisałem przynajmniej miało jakąś strukturę i sens. Jeśli czegoś nie rozumiesz to napisz. - PrezesiQ 2019-02-12 22:45

Pozostało 580 znaków

2019-02-13 08:03
1

Kluczowe hasło dla gógla - Inter Process Communication.
W skrócie Bracie @PrezesiQ swoją aplikację musisz napisać w oparciu o taki szkielet:

  • Uruchamiasz program, tworzy się jego proces, i pierwsze co robi to używając mechanizmów IPC sprawdza, czy już taki proces nie jest uruchomiony
  • Jak nie jest, to uruchomiony proces staje się powiedzmy Master Processem, i sobie działa dalej.
  • Kolejne uruchomienia programu wykrywają, że istnieje Master Process, zatem komunikują się z nim, dają mu dane czy co tam, po czym się zakańczają.

Aczkolwiek, mym zdaniem coś przekombinowujesz Bracie. Opisz bez zagłębiania się w technikalia, jaki efekt chcesz uzyskać, bo wygląda to na problem XY


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]

Pozostało 580 znaków

2019-02-13 11:19
0

co najmniej dziwny sposób komunikacji z programem i zapewnianie mu nowych danych.
tu masz coś o sprawdzaniu czy proces działa
https://stackoverflow.com/que[...]-a-program-is-already-running

Moim zdaniem masz jakiś dziwny pomysł.Weź obserwuj jakiś folder czy miej jakiś frontend i ślij do programu dane (JSON i POST, poprzez tworzenie nowego pliku w folderze) a dla każdego nowego taska twórz osobny wątek.


We are the 4p. Existence, as you know it, is over. We will add your biological and technological distinctiveness to our own. Resistance is futile

Pozostało 580 znaków

2019-02-13 18:28
0

Piszę program zarządzający plikami tymczasowymi. Ogólnie jestem zafiksowany na pisaniu drobnych narzędzi, których brakuje wszędzie, lub nie wiem o ich istnieniu.
W tym przypadku program umożliwiałby:

  1. Oznaczanie plików jako tymczasowe na X czasu
  2. Tworzenie plików tymczasowych na X czasu
  3. Zarządzanie plikami tymczasowymi (stworzonymi i oznaczonymi) - odznaczanie, zmiana czasu, etc.

I żeby móc to zrobić, to najlepiej dla mnie byłoby mieć jeden proces który miałby jakąś strukturę danych przechowująca te pliki tymczasowe (tzn. inne struktury danych zawierające o nich dane m.in ścieżka czy expiration time) i nimi zarządzał.


"Jesteśmy karłami, którzy wspięli się na ramiona olbrzymów. W ten sposób widzimy więcej i dalej niż oni, ale nie dlatego, ażeby wzrok nasz był bystrzejszy, lub wzrost słuszniejszy, ale dlatego, iż to oni nas dźwigają w górę i podnoszą o całą gigantyczną wysokość" ~ Bernard z Chartes
edytowany 2x, ostatnio: PrezesiQ, 2019-02-13 19:25

Pozostało 580 znaków

2019-02-13 18:48
0

To po co ci wiele procesów? Jeden programik ma w sobie zapisane te tymczasowe pliki, zapisuje je sobie lokalnie do pliczku i tyle. Zamkniesz program wiesz jaka była ostatnia struktura, otwierasz ponownie to wiesz co miałeś ostatnio. Jak chcesz wprowadzać nowe dane to robisz gui i tyle. W czym problem?


We are the 4p. Existence, as you know it, is over. We will add your biological and technological distinctiveness to our own. Resistance is futile
edytowany 1x, ostatnio: furious programming, 2019-02-13 19:51

Pozostało 580 znaków

2019-02-13 19:30
0

Właśnie nie potrzebuję wielu procesów, nie chcę też GUI, ponieważ pisanie z CLI jest szybsze niż szukanie przycisków w okienku i klikanie myszką.
Musiałby być jeden proces, ponieważ musiałby pilnować czasu (w osobnych wątkach dla każdego pliku, oczywiście byłyby limity, etc.).

Chyba, że nie do końca zrozumiałem Twój zamysł, to proszę naprostuj mi go.


"Jesteśmy karłami, którzy wspięli się na ramiona olbrzymów. W ten sposób widzimy więcej i dalej niż oni, ale nie dlatego, ażeby wzrok nasz był bystrzejszy, lub wzrost słuszniejszy, ale dlatego, iż to oni nas dźwigają w górę i podnoszą o całą gigantyczną wysokość" ~ Bernard z Chartes
edytowany 1x, ostatnio: PrezesiQ, 2019-02-13 19:30

Pozostało 580 znaków

2019-02-13 20:23
0

Musiałby być jeden proces, ponieważ musiałby pilnować czasu

Zrób sobie menu w konsolce na głównym wątku. Lista plików to nic innego jak lista która jest posortowana czasami. I tu możesz na szybko mieć dwa podejścia:

  • co 1 s bierzesz pierwszy element z listy(czyli który jest najbliżej wygaśnięcia. Patrzysz czy przekroczył czas, jak tak to wykonujesz operację na pliku, usuwasz z listy i pobierasz kolejny element jak jeszcze zostało trochę czasu do usunięcia znowu idziesz spać na 1s
  • Bierzesz pierwszy plik z listy, patrzysz ile czasu potrzeba, i dopiero za tyle się wybudzisz.

To tak na szybko


We are the 4p. Existence, as you know it, is over. We will add your biological and technological distinctiveness to our own. Resistance is futile
edytowany 3x, ostatnio: revcorey, 2019-02-13 20:27

Pozostało 580 znaków

2019-02-13 20:26
0

A informacje na temat plików możesz trzymać w pliku sqlite, on ma obsługę dostępu z wielu procesów naraz więc można się przez niego przy okazji synchronizować

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0