On Wed, Mar 24, 2004 at 08:24:34PM +0000, Ghanshyam wrote:
>Hi all,
>
>I found some problem in sigaction() system call with respect to following
>assertions defined in IEEE std 2003.1 -1992 Test methods for measuring
>conformance to POSIX-part1 document: When I run NIST-PCTS test suite on
>cygwin the following assertion failed.
>
>14(C)  If the behavior associated with {_POSIX_JOB_CONTROL} is supported:
>       When sig is SIGCHLD and the SA_NOCLDSTOP flag is set in sa_flags, then a
>       call to sigaction(sig, act, oact) results in a SIGCHLD signal not
>       being generated for the parent process whenever any of its child
>       processes stop.
>
>********** SIGCHLD signal received by parent process when SIGSTOP signal
>is send to child process!

I have employed a patented method that I have devised called "a simple
test case" to determine if your claim is true or not.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>

void
ouch (int sig)
{
  printf ("ouch %d\n", sig);
}

int
main (int argc, char **argv)
{
  struct sigaction newact = {0};
  struct sigaction oldact;
  int pid, x;

  if (argc == 1)
    newact.sa_flags = SA_NOCLDSTOP;
  newact.sa_handler = ouch;
  printf ("%d = sigaction\n", sigaction (SIGCHLD, &newact, &oldact));
  if ((pid = fork ()) > 0)
    kill (pid, SIGSTOP);
  else
    {
      sleep (5);
      sleep (1);
      puts ("exiting child\n");
      exit (0);
    }
  sleep (1);
  kill (pid, SIGCONT);
  wait (&x);
  puts ("exiting parent");
}

Compiling the above program as "sigstopchld" and running it provides:

  m:\test>.\sigstopchld         # Calling with SA_NOCLDSTOP
  0 = sigaction
  exiting child

  ouch 20                       # Just one SIGCHLD from child exit
  exiting parent

  m:\test>.\sigstopchld 1       # SA_NOCLDSTOP not set
  0 = sigaction
  ouch 20                       # first SIGCHLD
  exiting child

  ouch 20                       # second SIGCHLD
  exiting parent

This indicates to me that SA_NOCLDSTOP is working as designed.
--
Christopher Faylor              spammer? -> [EMAIL PROTECTED]
Cygwin Project Leader
Red Hat, Inc.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply via email to