aboutsummaryrefslogtreecommitdiff
path: root/coreutils/usleep.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2017-08-04 02:20:19 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2017-08-04 02:20:19 +0200
commitcf792a58abc4fc55d0622333d0eb17c6a80dc497 (patch)
treebd740050c3ac79b0db76bd29728dd4d29120ccc6 /coreutils/usleep.c
parent0a53eadea528673a813c5f9312b1f53130429f7c (diff)
downloadbusybox-w32-cf792a58abc4fc55d0622333d0eb17c6a80dc497.tar.gz
busybox-w32-cf792a58abc4fc55d0622333d0eb17c6a80dc497.tar.bz2
busybox-w32-cf792a58abc4fc55d0622333d0eb17c6a80dc497.zip
NOFORK fixes
"rm -i FILE" and "yes" can now be interrupted by ^C in hush. This also now works: $ usleep 19999999 ^C $ echo $? 130 function old new delta run_pipe 1668 1711 +43 pseudo_exec_argv 312 321 +9 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 52/0) Total: 52 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'coreutils/usleep.c')
-rw-r--r--coreutils/usleep.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/coreutils/usleep.c b/coreutils/usleep.c
index 7bc30c2a2..e68bb4c4d 100644
--- a/coreutils/usleep.c
+++ b/coreutils/usleep.c
@@ -38,6 +38,13 @@ int usleep_main(int argc UNUSED_PARAM, char **argv)
38 bb_show_usage(); 38 bb_show_usage();
39 } 39 }
40 40
41 /* Safe wrt NOFORK? (noforks are not allowed to run for
42 * a long time). Try "usleep 99999999" + ^C + "echo $?"
43 * in hush with FEATURE_SH_NOFORK=y.
44 * At least on uclibc, usleep() thanslates to nanosleep()
45 * which returns early on any signal (even caught one),
46 * and uclibc does not loop back on EINTR.
47 */
41 usleep(xatou(argv[1])); 48 usleep(xatou(argv[1]));
42 49
43 return EXIT_SUCCESS; 50 return EXIT_SUCCESS;