lecture_slides_08_082-processes-creating
lecture_slides_08_082-processes-creating
of Washington
Processes
University
of
Washington
Processes
University
of
Washington
¢ fork
is
unique
(and
oHen
confusing)
because
it
is
called
once
but
returns
twice
Processes
University
of
Washington
Understanding
fork
Process
n
Child
Process
m
pid_t pid = fork(); pid_t pid = fork();
if (pid == 0) { if (pid == 0) {
printf("hello from child\n"); printf("hello from child\n");
} else { } else {
printf("hello from parent\n"); printf("hello from parent\n");
} }
hello from parent Which
one
is
first?
hello from child
Processes
University
of
Washington
Fork
Example
¢ Parent
and
child
both
run
the
same
code
§ Dis:nguish
parent
from
child
by
return
value
from
fork()
§ Which
runs
first
aIer
the
fork()
is
undefined
¢ Start
with
same
state,
but
each
has
a
private
copy
§ Same
variables,
same
call
stack,
same
file
descriptors…
void fork1()
{
int x = 1;
pid_t pid = fork();
if (pid == 0) {
printf("Child has x = %d\n", ++x);
} else {
printf("Parent has x = %d\n", --x);
}
printf("Bye from process %d with x = %d\n", getpid(), x);
}
Processes