Summary:
-
D1030008 added Subprocess to libfolly in automake builds. This
surfaced some ambient compilation errors that slipped through in my
prior run through porting this.
- Mac OS X uses a nonstandard location for wait.h
- Non-Linux platforms don't support prctl; gate that on Linux
Test Plan:
- fbmake runtests in fbcode
- make check on Mac OS X
Reviewed By: davejwatson@fb.com
FB internal diff:
D1066273
Blame Revision:
D1030008
#include "folly/Subprocess.h"
+#if __linux__
#include <sys/prctl.h>
+#endif
#include <fcntl.h>
#include <poll.h>
#include <unistd.h>
-#include <wait.h>
#include <array>
#include <algorithm>
//
// The parent also unblocks all signals as soon as vfork() returns.
sigset_t allBlocked;
- r = ::sigfillset(&allBlocked);
+ r = sigfillset(&allBlocked);
checkUnixError(r, "sigfillset");
sigset_t oldSignals;
}
}
+#if __linux__
// Opt to receive signal on parent death, if requested
if (options.parentDeathSignal_ != 0) {
r = prctl(PR_SET_PDEATHSIG, options.parentDeathSignal_, 0, 0, 0);
return errno;
}
}
+#endif
return 0;
}
#include <sys/types.h>
#include <signal.h>
+#if __APPLE__
+#include <sys/wait.h>
+#else
#include <wait.h>
+#endif
#include <exception>
#include <vector>
public:
Options()
: closeOtherFds_(false),
- usePath_(false),
- parentDeathSignal_(0) {
+ usePath_(false) {
}
/**
*/
Options& usePath() { usePath_ = true; return *this; }
+#if __linux__
/**
* Child will receive a signal when the parent exits.
*/
parentDeathSignal_ = sig;
return *this;
}
+#endif
/**
* Helpful way to combine Options.
FdMap fdActions_;
bool closeOtherFds_;
bool usePath_;
- int parentDeathSignal_;
+#if __linux__
+ int parentDeathSignal_{0};
+#endif
};
static Options pipeStdin() { return Options().stdin(PIPE); }