aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorlandley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-01-29 06:45:38 +0000
committerlandley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-01-29 06:45:38 +0000
commitddf94f4da539b1604e2dd088bc7fea4e3b0d21db (patch)
tree4478db7a7fe52ea0f600546cb0b4f2fe5507f15b /docs
parent71b7f50951eaff7d522ef239103348092ce8e11a (diff)
downloadbusybox-w32-ddf94f4da539b1604e2dd088bc7fea4e3b0d21db.tar.gz
busybox-w32-ddf94f4da539b1604e2dd088bc7fea4e3b0d21db.tar.bz2
busybox-w32-ddf94f4da539b1604e2dd088bc7fea4e3b0d21db.zip
Remind me to implement bb_fork_exec()...
git-svn-id: svn://busybox.net/trunk/busybox@13651 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'docs')
-rw-r--r--docs/busybox.net/programming.html11
1 files changed, 11 insertions, 0 deletions
diff --git a/docs/busybox.net/programming.html b/docs/busybox.net/programming.html
index f77f3c3a6..6dbe6931f 100644
--- a/docs/busybox.net/programming.html
+++ b/docs/busybox.net/programming.html
@@ -235,6 +235,12 @@ second argument to pw_encrypt(text,buffer).</p>
235 235
236<h2><a name="tips_vfork">Fork and vfork</a></h2> 236<h2><a name="tips_vfork">Fork and vfork</a></h2>
237 237
238<p>Busybox hides the difference between fork() and vfork() in
239libbb/bb_fork_exec.c. If you ever want to fork and exec, use bb_fork_exec()
240(which returns a pid and takes the same arguments as execve(), although in
241this case envp can be NULL) and don't worry about it. This description is
242here in case you want to know why that does what it does.</p>
243
238<p>On systems that haven't got a Memory Management Unit, fork() is unreasonably 244<p>On systems that haven't got a Memory Management Unit, fork() is unreasonably
239expensive to implement, so a less capable function called vfork() is used 245expensive to implement, so a less capable function called vfork() is used
240instead.</p> 246instead.</p>
@@ -277,6 +283,11 @@ processes running at the same time. It means you can't have two processes
277sharing the same memory without stomping all over each other. As soon as 283sharing the same memory without stomping all over each other. As soon as
278the child calls exec(), the parent resumes.</p> 284the child calls exec(), the parent resumes.</p>
279 285
286<p>If the child's attempt to call exec() fails, the child should call _exit()
287rather than a normal exit(). This avoids any atexit() code that might confuse
288the parent. (The parent should never call _exit(), only a vforked child that
289failed to exec.)</p>
290
280<p>(Now in theory, a nommu system could just copy the _stack_ when it forks 291<p>(Now in theory, a nommu system could just copy the _stack_ when it forks
281(which presumably is much shorter than the heap), and leave the heap shared. 292(which presumably is much shorter than the heap), and leave the heap shared.
282In practice, you've just wound up in a multi-threaded situation and you can't 293In practice, you've just wound up in a multi-threaded situation and you can't