|
|
- #include <ulib.h>
- #include <stdio.h>
- #include <string.h>
-
- #define DEPTH 4
-
- void forktree(const char *cur);
-
- void
- forkchild(const char *cur, char branch) {
- char nxt[DEPTH + 1];
-
- if (strlen(cur) >= DEPTH)
- return;
-
- snprintf(nxt, DEPTH + 1, "%s%c", cur, branch);
- if (fork() == 0) {
- forktree(nxt);
- yield();
- exit(0);
- }
- }
-
- void
- forktree(const char *cur) {
- cprintf("%04x: I am '%s'\n", getpid(), cur);
-
- forkchild(cur, '0');
- forkchild(cur, '1');
- }
-
- int
- main(void) {
- forktree("");
- return 0;
- }
-
|