Linux-systemprogrammierung in C - Tutorials?

Direkte Linux-Programmierung, POSIX
Antworten
hanzf
Beiträge: 2
Registriert: Mo Nov 08, 2010 11:05 pm

Linux-systemprogrammierung in C - Tutorials?

Beitrag von hanzf » Do Nov 11, 2010 12:50 am

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;
}

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Linux-systemprogrammierung in C - Tutorials?

Beitrag von Xin » Do Nov 11, 2010 10:58 am

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. :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Linux-systemprogrammierung in C - Tutorials?

Beitrag von Dirty Oerti » Do Nov 11, 2010 11:48 am

http://www.ijon.de/comp/tutorials/threads/index.html

Der Code funktioniert, ich nehme also mal an, dass die Informationen hier prinzipiell richtig sind.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: Linux-systemprogrammierung in C - Tutorials?

Beitrag von +Fuss+ » Do Nov 11, 2010 4:44 pm

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.

hanzf
Beiträge: 2
Registriert: Mo Nov 08, 2010 11:05 pm

Re: Linux-systemprogrammierung in C - Tutorials?

Beitrag von hanzf » Do Nov 11, 2010 9:42 pm

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?

Antworten