Seite 1 von 1

Linux-systemprogrammierung in C - Tutorials?

Verfasst: Do Nov 11, 2010 12:50 am
von hanzf
Hallo,

Ich fange gerade an mich mit GTK+ programmierung (in C) zu beschäftigen und hätte gerne ein bißchen Hintergrundwissen.
Kennt jemand gute Tutorials zu Linux-Systemprogrammierung mit C? Also solche Sachen wie mehrere Threads, Interprozesskommunikation und "event driven" Programmierung. Ich habe nur das gefunden:
http://pronix.linuxdelta.de/C/index.shtml
und da scheinen mir ziemlich viele Fehler drin zu sein, manche Beispielprogs funktionieren gar nicht und die Erklärungen finde ich streckenweise etwas konfus...
Vorkenntnisse: Ganz, ganz früher mal Pascal unter MSDOS, neuerdings ab und an mal PHP, und das C-Tutorial hier auf proggen.org

Nachtrag: z.B. dieses Programm hier zum Thema "threads" habe ich von der oben genannten Seite, das gibt bei mir überhaupt nichts aus, wie müßte man das richtig machen? mir erscheint das alles ganz logisch, aber ich hab auch noch nie was mit threads gemacht...

Code: Alles auswählen

#include <stdio.h>
#include <pthread.h>

void hallo(void *name)
{
  int i;
  for(i = 0; i < 500; i++)
     printf("%d : %s sagt Hallo!\n",i ,(char *)name);
  pthread_exit((void *) 0);
}


int main()
{
 pthread_t t1, t2;

  if(pthread_create(&t1, NULL, (void *)&hallo, (void *)"Thread 1") != 0)
    {
      printf("Fehler bei Thread 1......\n");
      exit(0);
    }
  if(pthread_create(&t2, NULL, (void *)&hallo, (void *)"Thread 2") != 0)
   {
      printf("Fehler bei Thread 1......\n");
      exit(0);
    }
  return 0;
}

Re: Linux-systemprogrammierung in C - Tutorials?

Verfasst: Do Nov 11, 2010 10:58 am
von Xin
hanzf hat geschrieben:Ich fange gerade an mich mit GTK+ programmierung (in C) zu beschäftigen und hätte gerne ein bißchen Hintergrundwissen.
Kennt jemand gute Tutorials zu Linux-Systemprogrammierung mit C? Also solche Sachen wie mehrere Threads, Interprozesskommunikation und "event driven" Programmierung. Ich habe nur das gefunden:
http://pronix.linuxdelta.de/C/index.shtml
und da scheinen mir ziemlich viele Fehler drin zu sein, manche Beispielprogs funktionieren gar nicht und die Erklärungen finde ich streckenweise etwas
Ich habe leider derzeit leider keine Empfehlungen für Dich. Je nach Thema habe ich teilweise noch Quellen auf der Festplatte, die ich auf proggen.org dokumentieren und veröffentlichen möchte. Was die Threads angeht, so habe ich einen Webserver, der mittels fork neue Prozesse anlegt. (Ein Thread ist vereinfacht gesagt eine etwas leichtere Version eines Prozesses).
Ich habe nur noch soviele Baustellen, dass ich zum dem Webserver (Socket-Programmierung, Prozesse) derzeit gar nicht komme.
hanzf hat geschrieben:Nachtrag: z.B. dieses Programm hier zum Thema "threads" habe ich von der oben genannten Seite, das gibt bei mir überhaupt nichts aus, wie müßte man das richtig machen? mir erscheint das alles ganz logisch, aber ich hab auch noch nie was mit threads gemacht...
Schau mal hier: Forums-FAQ

Soweit mir/uns möglich ist, beantworte ich Deine Fragen gerne, aber zu einer Frage gehört, was Du tust (das hast Du gesagt), was Du von dem Programm erwartest und was es stattdessen tut. Hier sind die gegebenen Informationen "das gibt bei mir überhaupt nichts aus, wie müßte".
Hier wären Details hilfreich. ;-)

Ansonsten sei willkommen auf proggen.org. :-)

Re: Linux-systemprogrammierung in C - Tutorials?

Verfasst: Do Nov 11, 2010 11:48 am
von Dirty Oerti
http://www.ijon.de/comp/tutorials/threads/index.html

Der Code funktioniert, ich nehme also mal an, dass die Informationen hier prinzipiell richtig sind.

Re: Linux-systemprogrammierung in C - Tutorials?

Verfasst: Do Nov 11, 2010 4:44 pm
von +Fuss+
Wenn du dich mit eh mit GTK beschäftigst, dann solltest du versuchen die Plattformunabhängigkeit beizubehalten.
Für Threads müsste es eig. Funktionen in der glib geben, die auch relativ gut (wenn auch nur auf Englisch) dokumentiert sind.

Hier mal ein Link: http://library.gnome.org/devel/glib/sta ... reads.html

MfG Fuss

edit: wenn es nur um das Hintergrundwissen zu den Funktionen, die GTK ausführt, geht, kann ich so leider nicht helfen.

Re: Linux-systemprogrammierung in C - Tutorials?

Verfasst: Do Nov 11, 2010 9:42 pm
von hanzf
Xin hat geschrieben: Soweit mir/uns möglich ist, beantworte ich Deine Fragen gerne, aber zu einer Frage gehört, was Du tust (das hast Du gesagt), was Du von dem Programm erwartest und was es stattdessen tut. Hier sind die gegebenen Informationen "das gibt bei mir überhaupt nichts aus, wie müßte".
Hier wären Details hilfreich. ;-)
Sorry...
Dieses Programm habe ich genau so von http://www.pronix.linuxdelta.de/C/Linux ... .shtml#8_2 kopiert. Was ich erwartet habe:
eine Terminalausgabe wie z.B.

Code: Alles auswählen

0 : Thread 1 sagt Hallo!
0 : Thread 2 sagt Hallo!
1 : Thread 1 sagt Hallo!
2 : Thread 1 sagt Hallo!
1 : Thread 2 sagt Hallo!
3 : Thread 1 sagt Hallo!
2 : Thread 2 sagt Hallo!
3 : Thread 2 sagt Hallo!
...
und so weiter, bis

Code: Alles auswählen

499 : Thread 1 sagt Hallo!
499 : Thread 2 sagt hallo!
Dieses Verhalten würde ich von den Erklärungen auf der o.g. Seite her erwarten. Dort wurde allerdings angekündigt, daß nur einer der beiden Threads bis 499 gelangen und dann das gesamte Programm beendet würde. Aber auch das ist nicht passiert, statt dessen gab es überhaupt keine Ausgabe.
+Fuss+ hat geschrieben:Wenn du dich mit eh mit GTK beschäftigst, dann solltest du versuchen die Plattformunabhängigkeit beizubehalten.
Für Threads müsste es eig. Funktionen in der glib geben, die auch relativ gut (wenn auch nur auf Englisch) dokumentiert sind.
Danke für den Tip; wenn ich soweit bin, richtig nutzbare Programme zu schreiben, werde ich das beherzigen. Ich dachte für die Grundlagenkenntnisse ist es vielleicht gut, erstmal systemnäher zu programmieren?