hallo.

ich will einen messager fürs LAN schreiben. das soll so ablaufen:

gtk+ GUI startet, fork sich, startet server, forkt sich nochmal (für die connections).
für jedes neue nachrichtenfenster wird in einer einfach verketteten liste ein element einer datenstruktur hinzugefügt. die struktur ist folgendermaßen deklariert:

Code:
// die struktur für ein nachrichten-fenster
struct sess
{
	GtkWidget	*window;
	GtkWidget	*button;
	GtkWidget	*t_entry;
	GtkWidget	*s_entry;
	GtkWidget	*text_view;
	GtkWidget	*s_label;
	GtkWidget	*t_label;
	GtkWidget	*status;
	GtkWidget	*table;
	GtkTextTagTable	*t_table;
	GtkTextBuffer	*t_buffer;
	GtkTextBuffer	*s_buffer;
	int		nmb;
	const char	*title;
	struct sess *next;
};
die GtkWidgets sind für das fenster zuständig, title ist der fenstertitel. nmb ist die struktur interne nummer das wievielte fenster das ist.
wenn nun der server eine nachricht bekommt, will ich anhand nummer checken ob es das erste nachrichten-fenster ist, falls nicht will ich anhand titel in der liste schaun zu welchem fenster die nachricht gehört (der fenstertitel wird aus die IP nummer des absenders gesetzt).
das problem habe ich jetzt mit der aktualität der globalen variablen, da der server, die gui, und die handhabung der verbindungen verschiedenen prozesse sind. ich dachte an pipes für die interprozess-kommunikation.
ich hab einen integer[2] array mit pipe() initalisiert und schreibe bzw. lese mit write() und read(), aber in der variable des child-prozesses stehen falsche werte drinnen. ich denke das liegt daran dass die ipc nicht funktioniert.

da es zuviel wäre demn ganzen code hier zu posten hab ich ihn upgeloadet:

http://nopaste.php-q.net/1600

der einfachkeit halber habe ich alle dateien hier raufgeladen, ich hab es aber gekennzeichnet wann eine datei beginnt bzw. endet.

wer sich den sourcecode als tar.bz2 (8kb) runterladen will kann das hier:

www.catbull.com/~alex/lmess.tar.bz2

eine Makefile ist dabei, der code wurde auf linux 2.4.21 geschrieben und braucht gtk2.

danke