pid=fork() wird nicht 0

Gast #3570115
Lesenswert?

Hallo,

auf meinem ARM laeuft ein minimales Linux.

Das Programm, das ich debugge, macht einen fork(); jedoch ist die PID 
des Kindprozesses nicht 0.
1
pid_t pid = fork()
1
(gdb) 
2
1183-var-create - * pid
3
1183^done,name="var4",numchild="0",value="759",type="pid_t",thread-id="1",has_more="0"
4
(gdb) 
5
1184-var-evaluate-expression var4
6
1184^done,value="759"
7
(gdb)

Also, auch der eclipse debugger zeigt mir fuer PID den Wert 759 an.
Das ist aber nicht der Mutterprozess. Denn egal, ob ich vor oder nach 
fork() den folgenden Befehl benutze, die Ausgabe bleibt gleich.
1
(gdb) 
2
info inferior
3
1185-interpreter-exec console "info inferior"
4
~"  Num  Description       Executable        \n"
5
  Num  Description       Executable        
6
~"* 1    process 758       c:\\users\\ich\\documents\\zynqlinux\\workspace\\v\\debug\\myApp.elf \n"
7
* 1    process 758       c:\users\ich\documents\zynqlinux\workspace\v\debug\myApp.elf 
8
1185^done
9
(gdb)

Gibt es jetzt nur einen Prozess? Oder wieso zeigt gdb mir nur den einen 
an?
Und warum wird PID nicht 0? Ist das ARM oder Linux spezifisch?

DANKE
Gast #3570121
Lesenswert?

Wie wärs mal mit Code zeigen? Und warum denkst du dass der Debugger 
magisch in den Kind-Prozess springen soll, wo fork() 0 zurückgibt? Ich 
würde mal sagen der Debugger läuft brav im Parent-Prozess weiter, wo 
eben eine PID zurückkommt.
Gast #3570122
Lesenswert?

RETURN VALUE

    Upon successful completion, fork() shall return 0 to the child 
process and shall return the process ID of the child process to the 
parent process. Both processes shall continue to execute from the fork() 
function. Otherwise, -1 shall be returned to the parent process, no 
child process shall be created, and errno shall be set to indicate the 
error.

Magst Du Deine Frage nochmal neu formulieren?
Gast #3570161
Lesenswert?

Butterberger schrieb:
> jedoch ist die PID
> des Kindprozesses nicht 0.
Warum sollte die ProzessID des Kind-Prozesses 0 sein?

Butterberger schrieb:
> Und warum wird PID nicht 0?
Warum sollte sie 0 werden?

Butterberger schrieb:
> auch der eclipse debugger zeigt mir fuer PID den Wert 759 an.
> Das ist aber nicht der Mutterprozess
Was willst du denn nun? Die PID vom Eltern-Prozess oder vom 
Kind-Prozess?
Gast #3570270
Lesenswert?

Na gut, Denkfehler erkannt. PID ist positiv und nicht Null, also bin ich 
in Mutterprozess und es sollte ein Kind erzeugt worden sein.

Dennoch, ich versuche mit (gdb) in den Kindprozess zu gelangen, es will 
mir aber nicht gelingen.
1
(gdb) set follow-fork-mode child
habe ich gesetzt.
Auch anschliessendes
1
(gdb) set detach-on-fork on/off
habe ich versucht.
1
info inferiors
liefert aber immer nur den einen Prozess.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren