Hintergrunndprozess

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    Wenn ein Prozess im Hintergrunnd läuft, funktioniert die Standardeingabe nicht mehr, da die Befehle in /dev/null umgeleitet werden.
    Gibt es trotzdem eine Möglichkeit dies zu realisieren?:daumendreh2:

    Einmal editiert, zuletzt von Cool_pi (2. April 2015 um 02:19)

  • Du könntest den Input in eine Datei ablegen und im Code einen Signalhandler programmieren, der, wenn das Signal per "[font="Courier"]kill <signalnummer> <Prozessid>[/font]" reinkommt, das File ausliest.

    Das ist allerdings etwas eigen... wird aber gelegendlich gemacht...

    Stichworte für die Google-Suche:
    "linux hintergrundprozesse signal",
    "linux signalhandler",

    Guter Treffer für's Erste:
    http://www.selflinux.org/selflinux/html…rwaltung02.html, http://de.linwiki.org/wiki/Linuxfibe…rozesssteuerung

    my2ct, das Zen

  • Hallo Cool_Pi,

    hm, ... irgendwie führt Dich ein Problem ins Nächste. ;)

    Zuerst wolltest Du ein Programm aus einem anderen Programm aufrufen und ins erste Programm zurückkehren.

    Dann hat Dir jemand gesagt, dass Du das nicht mit system() sondern mir fork() machen solltest.

    Ich habe weiterhin den Verdacht, dass Du Dich mit den Grundlagen der Programmiersprache nicht ausreichend auseinandergesetzt hast. Alle Deine Fragen deuten meiner Meinung daraufhin.

    :s Was ich aber auch anerkennen muss, :bravo2: dass Du es immer wieder versuchst und Dich nicht davon abzubringen bist, Dich dem Ziel Deines Vorhabens anzunähern.

    Was Du aber beachten solltest, nicht alles, was Dir Profis nahelegen, ist für Dich in Deiner momentanen Anfänger-Situation auch unbedingt umsetzbar - da ein Vorschlag direkt ins nächste Problem mündet.

    Ich an Deiner Stelle wäre bei der Lösung mit system() geblieben. Dies hast Du verstanden. Das hat wohl auch funktioniert.

    Eine andere Möglichkeit, die ich selber mache, wenn ein Parallelprozess ein eigenes Konsolenfenster benötigt, dass ich ein LXTerminal vom aufrufenden Programm aus starte. LXTerminal hat den Vorteil, dass Du diesem Programm eine Reihe von Parametern übergeben kannst und u.a. mitteilen kannst, welches Programm gestartet werden soll, um dieses Terminal-Fenster zur Eingabe / Ausgabe nutzen soll.

    Vielleicht kommst Du hiermit mehr in die Richtung, die Dir vorschwebt?

    Wenn ja, hilft Dir hier

    Code
    man lxterminal

    einen großen Schritt weiter.

    Eine weitere Möglichkeit besteht darin, ein Programm mit einer graphischen Oberfläche (eines Tages) selber zu erstellen, in dem die Kommunikation mit Deinen Eingaben und Ausgabe des aufgerufenen Programmes stattfindet. Bitte verstehe dies nicht als sofort umzusetzenden Hinweis - die Programmierung graphischer Benutzeroberflächen gehört nicht zur Anfängerkost.


    Beste Grüße und gutes Gelingen!


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (12. Oktober 2017 um 21:30)

  • Andreas:
    Ok, ich hatte wohl übersehen, dass cool_pi mit "der Materie" insgesamt noch nicht so vertraut ist.
    Auch ist mir sein grundsätzliches Anliegen aus den anderen Threads, die du offensichtlich gut verfolgst, nicht so gegenwärtig.
    Deshalb kam von mir dieser Vorschlag mir dem Signalhandler... das ist natürlich etwas härtere Kost...

    Cool_pi:
    Ich will mein Post nicht löschen, deshalb an dich: Bitte nimm die Tips von Andreas an. Verwende NICHT meinen Hinweis, der ist recht anspruchsvoll wenn man die Grundlagen noch nicht so drauf hat. Selbst für fortgeschrittene (C++) Entwickler lauern da jede Menge Fallen...

    MfG, das Zen

  • Ich habe schon verstanden, dass das was ich vor habe, schwierig ist. Ich muss aber trotzdem irgendwie eine Lösung finden. Nehme gerne jeden Vorschlag an:).
    Grundlagen helfen da auch nicht immer. Wenn man weiß wie eine wheil-schleife funktioniert, kann man trotzdem ein komplexes Problem lösen nicht lösen
    :neutral:

    Einmal editiert, zuletzt von Cool_pi (2. April 2015 um 20:42)

  • Hallo Zentris, hallo Cool_Pi,

    Zentris: Dich hatte ich eigentlich nicht gemeint ;)

    Cool_pi:
    Jemand, der mit dem Programmieren beginnt, sollte meiner Meinung nach die grundlegenden Sprachkonstrukte beherrschen, bevor er sich an "Höheres" wagt.

    Programmieren baut aufeinander auf, wie sonst nur die Mathematik. Hat man die Grundlagen verstanden und kann sie sicher anwenden, dann fällt es leichter, kompliziertere Dinge anzugehen.

    Wenn man andauernd versucht, irgendwelchen Hinweisen zu folgen, wie man irgendetwas noch eleganter lösen könnte, dann verliert man - insbesondere als Anfänger - ganz schnell den Überblick und den Durchblick. Letztlich verliert man sich beim Programmieren, verliert den roten Faden - und irgendwann auch die Motivation.

    Als Anfänger ist es meines Erachtens vollkommen legitim, in C mit globalen Variablen zu arbeiten. Ob es ein C-Profi anders sieht, braucht einen Anfänger nicht zu interessieren.

    Genauso legitim ist es, wenn ein C-Anfänger externe Programme bzw. Linux-Kommandos mit dem Befehl [font="Courier"]system()[/font] aufruft. Dafür ist der Befehl gedacht und gemacht. Auch wenn es andere Möglichkeiten und Konzepte gibt, die von C-Profis bevorzugt werden. Was der Anfänger als erstes versteht, ist nun einmal [font="Courier"]system()[/font].

    Alles Weitere braucht seine Zeit, um verstanden zu werden und sicher eingesetzt werden zu können.


    Bleibe bei der einfachsten Lösung, die Du verstanden hast - und die bei Dir funktioniert.


    Alles andere macht Dich nicht glücklich - und Du verzettelst Dich in akademischen Blähungen...


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo Cool_Pi,

    und genau das glaube ich nicht. Dann liegt bereits hier ein Fehler vor...

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo Cool_Pi,

    nachdem ich mir jetzt einmal die Mühe gemacht habe, rund zwei Stunden lang Deine mittlerweile rund 30 Threads, in denen Du prinzipiell immer das gleiche Problem aus allen Richtungen beleuchtest und Du durch Hinweise anderer mehrfach auf Irrwegen gewandelt bist, von vorne bis hinten zu lesen inkl. der Hilfestellungen der hiesigen Raspberry Pi-Koryphäen, ist mir u.a. auch der hier aufgefallen.

    Dort schreibst Du im Beitrag #6, dass es so funktioniert.

    Die Frage ist, warum Du in diesem Thread nun plötzlich behaupten kannst, dass es jetzt nicht mehr funktionieren soll. Sooooo viel hat sich in der IT-Szene in den vergangenen Monaten nun nicht gerade verändert, dass grundlegende ehemals erfolgreiche Vorgehensweisen nun plötzlich doch scheitern sollten.

    Ich fühle mich von Dir ein wenig arg verschaukelt - und ziehe mich deswegen aus Deinen Threads zurück.

    Bitte, auch keine PNs mehr... ich werde nicht mehr darauf antworten... :-/


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    2 Mal editiert, zuletzt von Andreas (12. Oktober 2017 um 21:27)

  • Ich habe auch mal ein paar deiner Themen quergelesen. Du machst es deinen Helfern wirklich nicht ganz einfach.
    Um mal ein paar Grundregeln der Ubuntuusers zu zitieren:

    • Eine Frage, ein Thema
    • Verwende aussagekräftige, genaue Betreffzeilen
    • Sende Fragen in einfach zu lesenden Formaten
    • Sei genau und informativ über Dein Problem
    • Beschreibe das Ziel, nicht einen Schritt
    • Sei explizit bei der Frage, die Du hast
    • Verlange keine Antworten durch private Mails
    • Denke mit
    • Interpretiere Antworten richtig


    Vorallem aber: Gehe auch auf Antworten ein und hilf mit bei der Lösung (Code zeigen, Fehlermeldungen zeigen,..)
    Nur wenn man sich Mühe mit der Frage gibt, gibt sich auch jemand Mühe mit einer Antwort.

    Vorschlag: Beschreibe dein Problem genau mit allen Details die du hast. Am guten Willen/Können der potentiellen Helfer hier im Forum hängts nicht.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!