Most Linux and BSD distributions ship with a version of dd that
displays the status of a copy operation when a SIGUSR1 signal is
received. For some reason /usr/bin/dd on Solaris hosts doesn't contain
this capability (it has a signal handler for SIGINT which causes stats
to be displayed, but the handler calls exit() after printing the
statistics), and I would like to add it. After reading through the
source code for dd.c, it looks like adding this support would be as
simple as installing a signal handler for SIGUSR1, and having it call
the function stats. I am attaching code (which I derived from the dd
source code that comes with Fedora Core Linux) [1] to add this support
to /usr/bin/dd, and have tested it on my build 54 machine. Would it be
possible to integrate this or something similar to opensolaris
(assuming this doesn't break some rule defined by the SUS or POSIX)?

- Ryan
UNIX Administrator


/* Create a signal handler for SIGUSR1 so dd can display stats for
active copies.*/
struct sigaction sa;
memset(&sa, 0, sizeof(sa));
sa.sa_handler = stats;
sa.sa_flags = SA_RESTART;
sigaction(SIGUSR1, &sa, 0);

Reply via email to