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