70 DL((
FORK,
"exec \"%s %s\")\n", cmd_.c_str (), args_.c_str ()));
71 if (cmd_.size () == 0) {
84 string arg_list (cmd_);
85 arg_list +=
" " + args_;
94 for (
int i = 0; i < 1024; i++) {
97 pid_t nullfd = open(
"/dev/null", O_WRONLY | O_CREAT, 0666);
99 syslog (LOG_ERR,
"failed to open \"/dev/null\"");
103 (void) dup2 (nullfd, 1);
104 (void) dup2 (nullfd, 2);
105 (void) close (nullfd);
108 execvp (cmd_.c_str (), argv);
110 EL((
ASSAERR,
"fork_exec (\"%s\") failed\n", cmd_.c_str ()));
114 if (! wait_for_completion_) {
120 #endif // defined(WIN32)
138 DL((
FORK,
"Caught signal # %d\n", signum_));
140 if (signum_ == SIGCHLD) {
143 pid_t ret = ::wait (&status);
144 DL((
FORK,
"wait() = %d (PID)\n", ret));
146 if (ret > 0 && (WIFEXITED (status))) {
168 if ((
m_pid = fork()) < 0) {
169 EL((
ASSAERR,
"failed to fork() - out of swap space?\n"));
192 list<fnode_t* >::iterator i;
199 if ((*i)->needKill()) {
200 ::kill((*i)->getPID(), SIGTERM);
205 while ( !
m_list.empty() ) {
214 list<fnode_t* >::iterator j;
217 if ((*j)->getPID() == pid) {
227 #endif // !defined(WIN32)