From 7c40ddd9500907925041131374cb43eb87ef5494 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Wed, 2 Aug 2017 16:37:39 +0200 Subject: 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 --- coreutils/usleep.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'coreutils/usleep.c') diff --git a/coreutils/usleep.c b/coreutils/usleep.c index 7c25aada1..684ab781b 100644 --- a/coreutils/usleep.c +++ b/coreutils/usleep.c @@ -38,6 +38,13 @@ int usleep_main(int argc UNUSED_PARAM, char **argv) bb_show_usage(); } + /* Safe wrt NOFORK? (noforks are not allowed to run for + * a long time). Try "usleep 99999999" + ^C + "echo $?" + * in hush with FEATURE_SH_NOFORK=y. + * At least on uclibc, usleep() thanslates to nanosleep() + * which returns early on any signal (even caught one), + * and uclibc does not loop back on EINTR. + */ usleep(xatou(argv[1])); return EXIT_SUCCESS; -- cgit v1.2.3