Comment #0 by mihail.zenkov — 2011-11-09T20:20:36Z
std.process.system should return non-zero exit code when it stopped by ctrl+c.
Simple test:
import std.stdio;
import std.process;
void main() {
int ret = system("sleep 10");
writeln("RET ", ret);
}
Comment #1 by hsteoh — 2012-02-24T22:11:29Z
There are several issues here.
1) According to the current docs, std.process.system returns the value of WEXITSTATUS(status), and in this case, the value of this macro is indeed 0 (as I checked on my Linux system).
2) Which brings me to the next point: the current implementation of system() in Phobos assumes a particular definition of WEXITSTATUS. It works on Linux, but there's no guarantee it will work on other Posix systems because they may define WEXITSTATUS differently. (But I may wrong, based on a comment in glibc that essentially says the current definition is across the all known unixen, in spite of the Posix spec leaving this open to interpretation.)
3) But more importantly, should we return non-zero if the child exits via a signal? If so, we need std.process.system to check the value of WIFSIGNALED(status) and possibly WCOREDUMP(status), and return a meaningful value (maybe -1?).