segfaults

Lars T. Kyllingstad public at kyllingen.NOSPAMnet
Wed May 5 00:22:46 PDT 2010


On Tue, 04 May 2010 15:22:52 -0500, Ellery Newcomer wrote:

> On 05/04/2010 11:32 AM, Lars T. Kyllingstad wrote:
>>
>> Shouldn't 'term' and 'signaled' switch names?  It looks to me like
>> 'term' will be nonzero if the process receives any signal, while
>> 'signaled' will be only be true if it is a terminating signal, and not
>> if it is a stop signal.
>>
>>
> signaled corresponds to WIFSIGNALED, whatever that is, and takes its
> name.
> 
> term has no justification for its name; I just want something that is
> the same as what bash returns on segfault. I don't know what it does on
> BSD, though.
> 
>> Otherwise it looks right, at least on Linux.  But why not use the
>> core.sys.posix.sys.wait.Wxxx() functions?  Then it will automatically
>> work on BSD and MacOS as well.
> 
> Easy, I didn't know about that module when I wrote this.
> 
> alias Tuple!(int, "status",int, "signal", int, "termsig",bool,
> "signaled",bool, "stopped", bool,"continued") PID;
> 
> PID toPID(int p){
>      PID pid;
>      pid.status = WEXITSTATUS(p);
>      pid.signal = (p & 0xff);
>      pid.termsig = WTERMSIG(p);
>      pid.signaled = WIFSIGNALED(p);
>      pid.stopped = WIFSTOPPED(p);
>      pid.continued = cast(bool) WIFCONTINUED(p); //why the eff is this
> defined as an int?

Don't know.  Since all the other WIF* tests return bool, that looks like 
a bug.


>      return pid;
> }
> 
> Is the coredump flag a linux-only thing?

No, it exists in BSD and MacOS as well, but it's not a part of the POSIX 
specification.  I assume that's why Sean didn't include it in the 
druntime headers.  According to the man page it's not available on AIX 
and SunOS, and probably others.

-Lars


More information about the Digitalmars-d-learn mailing list