Programm in C/C++ schreiben das andere Prozesse startet

Hinweis: In dem Thema Programm in C/C++ schreiben das andere Prozesse startet gibt es 6 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Hallo allerseits,


    ich habe mal eine Frage. Ich möchte mir ein Programm schreiben in C/C++ das neue Prozesse startet und wartet bis diese geschlossen werden. Ich habe mir die Befehle fork(),exec() und waitpid() angeschaut finde aber kein gutes Beispiel das mir veranschaulicht wie ich das ganze umsetzen könnte bzw. wie ich die Befehle einsetze (bin da auf Neuland deshalb bitte Verständnis haben :) ).


    Um das ganze ein wenig verständnisvoller zu machen hier eine Erläuterung zu dem was ich vor habe.
    Ich habe mir drei Programme zur Verwaltung eines Terrarien Bestandes geschrieben.


    Das erste Programm gibt mir rein Informationen zu den Haltungsbedingungen der Tiere, Herkunft etc.. pp aus die ich in einer Datei eingepflegt habe. In dieser kann ich nach lat. Namen oder Trivial Name suchen und bekomme dann die Infos angezeigt.


    Das zweite Programm ist ein Bestands Verwaltungs Programm. Mit diesem pflege ich ganz genau ein wann ich ein Tier erworben habe bzw. es geboren wurde, ob es einen besonderen Schutzstatus hat für das ich einen Herkunftsnachweis brauch oder ob ich dieses Tier abgegeben habe und falls ja wann und an wen.


    Das dritte Programm ist für die Fütterung da. Mit diesem erfasse ich wann ich als letztes die Tiere gefüttert habe und in welchem Intervall gefüttert werden muss bzw. im Terrarium gesprüht werden muss. Ich kann dann einfach abfragen welche Tiere heute gefüttert/Terris gesprüht werden müssen und eine Liste taucht auf.


    Diese drei Programme möchte ich nicht jeweils einzeln immer starten müssen da ich das sehr umständlich finde und nicht User Friendly.
    Deshalb dachte ich mir ein Programm zu schreiben das ein Menü in der Konsole ausgibt mit einer Auswahl für die drei Programme. Wenn man die 1 drückt öffnet das Programm einen neuen Prozess mit dem Programm 1 und wartet bis dieser geschlossen wird. Wenn dieses dann geschlossen wird zeigt es wieder das Menü an und man kann sein gewünschtes Programm wieder auswählen. Mit der Eingabe einer 4 oder so wird dieses dann geschlossen.


    Die drei Programme in ein großes Programm reinzupacken hatte ich überlegt, aber denke das ist zu unübersichtlich am Ende. Deshalb denke ich wäre die Prozess Lösung am besten. Hoffe jemand kann mir ein wenig das Ganze näher bringen :)


    Ich hoffe ich habe das ganze in die richtige Sektion gepostet. Falls nicht bitte ich um Entschuldigung


    Viele Grüße,
    Thorbenn

    Für den Inhalt des Beitrages 60576 haftet ausdrücklich der jeweilige Autor: Thorbenn

  • Hast du das ganze Objektorientiert umgesetzt?
    Das sollte alles ohne größere Probleme der Übersichtlichkeit etc. in ein Projekt gepackt werden können.


    Hier wird gleich bei der zweiten Antwort beschrieben wie du andere Prozesse starten kannst.


    Über cin und get(line) könntest du zudem dein Menü umsetzen.


    Aber nochmal wie hast du das ganze umgesetzt?
    Vielleicht stellst du den Quellcode ja mal hier hoch, der ein oder andere kann ja vllt. mal drüber schauen ;)
    (bin diese Woche leider wohl erst mal nicht mehr hier)

    ___________________________________________________________________________________
    Zypper Befehlsreferenz

    Für den Inhalt des Beitrages 60582 haftet ausdrücklich der jeweilige Autor: lush

  • Hi lush,


    ja ist alles Objektorientiert programmiert, jedoch möchte ich doch nicht alle in ein großes Projekt zusammen packen da ich dann bei jedem kleinen bug alles zusammen wieder kompilieren muss bzw. wird es zu einem großen Projekt mit zigg header und cpp. Deshalb habe ich die drei verschiedenen Programme als einzelne Projekte angelegt und von jedem eine ausführbare Datei kompiliert.
    (das waren die Gedanken hinter dem Splitting des Ganzen)


    Zitat

    Hier wird gleich bei der zweiten Antwort beschrieben wie du andere Prozesse starten kannst.

    Welche zweite Antwort? Sehe hier nur deine :)


    Bin grad nicht zuhause kann aber demnächst den Quelltext hochladen :)


    Gruß Thorbenn :smilie_pc_011:

    Für den Inhalt des Beitrages 60613 haftet ausdrücklich der jeweilige Autor: Thorbenn

  • Mit einem Wort geht es darum ein dreipunkte Menu anzuzeigen, dass nach Auswahl eines von drei Programmen startet.


    Da reicht ein schlichtes bash script mit einer Zeile:

    Code
    select auswahl in Füttern futtern Staubsaugen ; do echo "wurde $auswahl gewählt."; done

    (ggf. vorher den Prompt PS3 setzen; der wird als Text ausgegeben. z.b.: PS3=" Wählen sie 1 für füttern......"

    Für den Inhalt des Beitrages 60614 haftet ausdrücklich der jeweilige Autor: uhelp

  • Ah ok danke. Werde mich dann mal mit bash scripts auseinander setzen :). Das ist quasi dann wie eine .bat datei unter dos wenn ich das richtig verstehe von den code Schnippsel von dir :).


    Aber rein theoretisch müsste es aber auch mit C++ gehen oder (das jetzt aus reiner neugier :) )?


    Gruß Thorbenn

    Für den Inhalt des Beitrages 60680 haftet ausdrücklich der jeweilige Autor: Thorbenn

  • Na klar geht das auch direkt mit C++.


    Rein logisch wäre es da am sinnvollsten noch ein weiteres C++-Programm zu schreiben, dass dann eben das Menü darstellt, die Usereingaben liest und dann die benötigten Prozesse startet.


    Ich bin aber nach wie vor der Meinung, dass man das ohne Probleme in einem Projekt umsetzen kann :P
    Das sollte auch nicht zu groß werden.
    Wenn dich der Header/Quelldatei-Kram von C++ nervt, wirst du evtl. auf eine andere Programmiersprache umsteigen müssen.


    Du könntest ja evtl. trotzdessen deinen Quellcode hier mal hochladen den würde ich mir gerne mal anschauen :D
    ( Kornnatter ;) )

    ___________________________________________________________________________________
    Zypper Befehlsreferenz

    Für den Inhalt des Beitrages 60780 haftet ausdrücklich der jeweilige Autor: lush

  • Hier wird gleich bei der zweiten Antwort beschrieben wie du andere Prozesse starten kannst.
    Welche zweite Antwort? Sehe hier nur deine :)

    Da war ich mal wieder zu schnell und habe vergessen den entsprechenden Link auf den ich mich bezogen habe zu verlinken..


    Hier jetzt der Link :P


    Das Prinzip sollte relativ klar sein, wenn nicht kannst du ja nocheinmal nachfragen.

    ___________________________________________________________________________________
    Zypper Befehlsreferenz

    Für den Inhalt des Beitrages 60783 haftet ausdrücklich der jeweilige Autor: lush