> X-Original-To: ksh93-integration-discuss at opensolaris.org
> Delivered-To: ksh93-integration-discuss at opensolaris.org
> Date: Fri, 15 Aug 2008 13:58:01 -0400
> From: Glenn Fowler <gsf at research.att.com>
> To: ksh93-integration-discuss at opensolaris.org
> Subject: Re: [ksh93-integration-discuss] [Bug 571] New: AST sleep SIGALRM 
behavior incompatible with Solaris /usr/bin/sleep
> List-Id: Korn Shell 93 integration/migration project discussion 
<ksh93-integration-discuss.opensolaris.org>
> 
> 
> On Fri, 15 Aug 2008 10:05:19 -0700 (PDT) bugzilla-daemon at np.grommit.com 
> wrote:
> 
> > In the next ksh93 update in Solaris, the ksh93 built-in sleep will be 
replacing
> > Solaris /usr/bin/sleep.
> 
> > Solaris /usr/bin/sleep will catch the SIGALRM but do nothing.  The sleep
> > continues and effectively ignores the signal, eventually exiting with 
> > status 0.
> 
> > The AST ksh93 built-in sleep will do the default action for SIGALRM:
> > it terminates and exits with 142 (128 + 14 (the signal # for SIGALRM).
> 
> > Although both behaviors are allowed by the standard, the differing
> > behavior will be an incompatibility when ksh93 sleep replaces 
> > Solaris /usr/bin/sleep.
> 
> isn't this simply the difference between a builtin command and an a.out?
> 
> can you show 2 test cases, one with /usr/bin/sleep and one with the ksh93 
builtin sleep
> I'm particularly interested in how SIGALRM is delivered
> i.e., the pid to kill in both cases
> 
> -- Glenn Fowler -- AT&T Research, Florham Park NJ --
> 
> _______________________________________________
> ksh93-integration-discuss mailing list
> ksh93-integration-discuss at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/ksh93-integration-discuss

Hi Glenn,

Since the sleep built-in will be called via a ksh93 script,
the SIGALRM is delivered to the ksh93 process.

Example for Solaris /usr/bin/sleep:

In one terminal window:
$ /usr/bin/sleep 15

In another window:

$ pgrep -l sleep
 1012 sleep
$ kill -ALRM 1012

Back in the first window, the sleep continues.  When it exits:

$ echo $?
0

For ksh93 sleep, attached is the ksh93 script which will call the sleep
built-in.  If we replace /usr/bin/sleep with this script:

In one terminal window, we execute the ksh93 script which calls the sleep 
built-in:

$ /usr/bin/sleep 15

In a second window:
$ pgrep -l ksh93
 1062 ksh93
$ kill -ALRM 1062

Back in the first window, the sleep script terminates immediately:
Alarm Clock
$ echo $?
142

Thanks,
        April
-------------- next part --------------
#!/usr/bin/ksh93

#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#

#
# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# ident "@(#)alias.sh   1.1     08/06/30 SMI"
#

# Get name of builtin
builtin basename
typeset cmd="$(basename "$0")"

# If the requested command is not an alias load it explicitly
# to make sure it is not bound to a path (those built-ins which
# are mapped via shell aliases point to commands which are
# "special shell built-ins" which cannot be bound to a specific
# PATH element) - otherwise we may execute the wrong command
# if an executable with the same name sits in a PATH element
# before /usr/bin (e.g. /usr/xpg4/bin/ls would be executed
# before /usr/bin/ls if would look like
# PATH=/usr/xpg4/bin:/usr/bin).
if ! alias "${cmd}" >/dev/null 2>&1; then
        builtin ${cmd}
fi

${cmd} "$@"

Reply via email to