http://www.pronix.de -> Forum -> Linux-Unix Programmierung

Forum: Linux-Unix Programmierung

Moderatoren: juergen, Martin Conrad

Thema: Mit 2 Prozessen auf Variabel oder Struct zugreifen

  • (nur registrierte Mitglieder)
Hallo,

ich möchte eine art Statusvariable erstellen und diese mit 2 Prozessen verändern können. Also 2 Programme (eines als lesender Teil und eines als schreibender Teil) sollen auf eine Variable oder Struct zugreifen können. Wie kann man dies unter Linux realisieren?

Danke schonmal für die Hilfe und Grüße,
Hanbiball
 
Hallo Hanniball,

Zitat:

Wie kann man dies unter Linux realisieren?


Eine Statusvariable erstellen und danach mit fork() zwei Prozesse erzeugen:


#include <unistd.h>

int main(void)
{
        int pid, state;

        switch(pid = fork()) {
                case -1: /* error */ break;
                case 0:  /* child process */ break;
                default: /* parent process */ break;
        }

        return 0;
}


Gruss,
Philip

--
The C Programming Quiz (externer link) - bitte Fragen einreichen :)

 
Danke für die Antwort,

nur habe ich dies leider nicht so ganz verstanden. Wir forken und erzeugen einen Kindprozess. Wie manipuliere ich Status, sodass es von einem anderen Prozess ausgelesen wird. Konkret möchte ich Fifo-Pipe nutzen Ausgaben zu tätigen. Den Inhalt formuliere ich in einem anderen Prozess. Dort wird nach jeder Eingabe gefragt, ob man eine weitere tätigen möchte. Wenn nicht, dann wird im anderen Prozess/Programm das Pipe geschlossen und der Prozess beendet.

Grüße,
Haniball
 
Zitat:

Wir forken und erzeugen einen Kindprozess. Wie manipuliere ich Status, sodass es von einem anderen Prozess ausgelesen wird.


Der Kindprozess ist der andere Prozess. Wenn Deine beiden Prozesse unabhängig voneinander existieren können sollen, hättest Du das erwähnen müssen. In diesem Fall kannst Du nämlich nicht auf Variablen in anderen Prozessen zugreifen. Du müsstest irgendeine Kommunikation zwischen den Prozessen etablieren und über eine Art Protokoll Werte abfragen und ggf. übermitteln.

Was sind das denn für zwei ominöse Prozesse, was machen sie konkret, und warum genau müssen sie miteinander kommunizieren?

Gruss,
Philip

--
The C Programming Quiz (externer link) - bitte Fragen einreichen :)

 
Hallo,

der erste Prozess, nennen wir ihn Pipewrite erzeugt ein Fifo-Pipe, fordert den Benutzer zu einer Eingabe ein und schreibt die Eingabe in das Pipe.

der zweite Prozess, nennen wir ihn Piperead gibt, sobald etwas in der Pipe steht auf der Konsole aus.

der Pipewrite fragt nun, ob der Benutzer eine weitere Eingabe tätigen möchte. Wenn nicht, dann soll dieses Piperead mitgeteilt werden um das Pipe zu schliessen und selbst zu terminieren. Dazu muss ich irgendwie einen Status austauschen.

Grüße,
Haniball
 
  • (nur registrierte Mitglieder)