File: childprocess.cc

package info (click to toggle)
bobcat 2.08.01-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 5,668 kB
  • ctags: 953
  • sloc: cpp: 10,403; makefile: 9,042; perl: 401; sh: 195
file content (28 lines) | stat: -rw-r--r-- 842 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "process.ih"

void Process::childProcess()
{
    ExecContext ec;
    if (d_processType != USE_SHELL)
        ec = analyzeCommand();     // No system, so run execl() or execle()
    else
    {
        ec.args = new char const *[4];
        ec.args[0] = "/bin/sh";
        ec.args[1] = "-c";
        ec.args[2] = d_command.c_str();
        ec.args[3] = 0;
    }
                          
    (*(d_processType == USE_PATH ? execvp : execv))
        (ec.args[0], const_cast<char * const *>(ec.args));

    throw Errno("Process: ") << insertable << " cannot execv[p] " << 
                                                d_command << throwable;
}

//    std::cerr << "ChildProcess starts as:\n";
//    for (char const **cp = ec.args; *cp; ++cp)
//        std::cerr << "  " << *cp << endl;
//    std::cerr << "======================\n";