File: childprocess.cc

package info (click to toggle)
bobcat 6.11.00-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,292 kB
  • sloc: cpp: 21,370; fortran: 6,507; makefile: 2,787; sh: 724; perl: 401; ansic: 26
file content (47 lines) | stat: -rw-r--r-- 937 bytes parent folder | download | duplicates (2)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "proc.ih"

// overrides
void Proc::childProcess()
{
    ExecContext ec;
    if (d_procType != USE_SHELL)
        ec = analyzeCmd();          // No system, so run execl() or execle()
    else
    {
        ec.argv = new char const *[4];
        ec.argv[d_writeOut] = "/bin/sh";
        ec.argv[1] = "-c";
        ec.argv[2] = d_cmd.c_str();
        ec.argv[3] = 0;
    }

    (*(d_procType == USE_PATH ? execvp : execv))
        (ec.argv[0], const_cast<char * const *>(ec.argv));

    throw Exception{} << "Proc: cannot execv[p] " << d_cmd;


}


//    char buffer[100];
//    int nRead;
//
////    int fd = (*d_pipesPtr)[d_read].readFd();
//
//    while (true)
//    {
//        cin.read(buffer, 100);
//        nRead = cin.gcount();
//
//        //nRead = read(fd, buffer, d_bufSize);
//
//        if (nRead == 0)
//            break;
//
//        cout.write(buffer, nRead);
//    }
//
//    cerr << "END\n";
//
//    throw 0;