35 lines
708 B
C
35 lines
708 B
C
|
#include <stdio.h>
|
||
|
#include <ulib.h>
|
||
|
|
||
|
int magic = -0x10384;
|
||
|
|
||
|
int
|
||
|
main(void) {
|
||
|
int pid, code;
|
||
|
cprintf("I am the parent. Forking the child...\n");
|
||
|
if ((pid = fork()) == 0) {
|
||
|
cprintf("I am the child.\n");
|
||
|
yield();
|
||
|
yield();
|
||
|
yield();
|
||
|
yield();
|
||
|
yield();
|
||
|
yield();
|
||
|
yield();
|
||
|
exit(magic);
|
||
|
}
|
||
|
else {
|
||
|
cprintf("I am parent, fork a child pid %d\n",pid);
|
||
|
}
|
||
|
assert(pid > 0);
|
||
|
cprintf("I am the parent, waiting now..\n");
|
||
|
|
||
|
assert(waitpid(pid, &code) == 0 && code == magic);
|
||
|
assert(waitpid(pid, &code) != 0 && wait() != 0);
|
||
|
cprintf("waitpid %d ok.\n", pid);
|
||
|
|
||
|
cprintf("exit pass.\n");
|
||
|
return 0;
|
||
|
}
|
||
|
|