sohnprozess
-
hallo,
ich wollte nu mit fork etwas arbeiten.
die anzahl der prozesse soll über die kommandozeile angegeben werden
und jeder sohn soll einen anderen buchstaben darstellen, klappt
bei mir irgendwie nicht, egal welche Zahl ich für die Anzahl der Prozesse
eingebe es werden immer 2 erzeugt und beide geben mir 'A' wieder.
Könnt ihr euch das bitte mal anschauen und mir verraten, woran es liegt?// .... int zeilenangabe; //m int sohnprozesse; //n char mychar='A'; .... sohnprozesse=atoi(argv[1]); zeilenangabe=atoi(argv[2]); for(sohn=0;sohn<sohnprozesse;sohn++){ sohn=fork(); if(status == 0){ for(zeilen=1;zeilen<=zeilenangabe;zeilen++){ for(zeichen=0;zeichen<LAENGE;zeichen++){ write(1,&mychar,1); } write(1, "\n", 1); } } if(status > 0){ for(vateri=1;vateri<=10;vateri++){ printf("(%d) Ich bin der Vater. \n", vateri); sleep(1); } } if(status < 0){ perror("In fork():"); } exit(0); } mychar++; ...
ich möchte hier einfach nebenläufige prozesse abspielen lassen.
daher bitte keine warnungen von wegen: es geht noch einfacher und
besser.
Aber immer das A ausgegeben kann ja keine überlagerung bedeuten.
wenn, dann müsste es ja jedesmal etwas anderes und verstümmelt o.ä.
angezeigt werden.....gruß
-
Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
In deinem Programm steckt ein Fehler, der nichts mit fork() zu tun hat:
for(sohn=0;sohn<sohnprozesse;sohn++){ sohn=fork(); if(status == 0){
Das sollte doch wahrscheinlich
status = fork();
heißen, oder? Sonst macht die ganze for()-Schleife keinen Sinn.