FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
node/src/node_child_process.h at master · basuke/node · GitHub
basuke
/
node
Public
forked from
nodejs/node-v0.x-archive
Notifications
You must be signed in to change notification settings
Fork
0
Star
1
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
node
/
src
/
node_child_process.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
68 lines (55 loc) · 2.02 KB
Breadcrumbs
node
/
src
/
node_child_process.h
Copy path
File metadata and controls
68 lines (55 loc) · 2.02 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//
Copyright 2009 Ryan Dahl <ry@tinyclouds.org>
#
ifndef
NODE_CHILD_PROCESS_H_
#
define
NODE_CHILD_PROCESS_H_
#
include
<
node.h
>
#
include
<
node_object_wrap.h
>
#
include
<
v8.h
>
#
include
<
ev.h
>
//
ChildProcess is a thin wrapper around ev_child. It has the extra
//
functionality that it can spawn a child process with pipes connected to
//
its stdin, stdout, stderr. This class is not meant to be exposed to but
//
wrapped up in a more friendly EventEmitter with streams for each of the
//
pipes.
//
//
When the child process exits (when the parent receives SIGCHLD) the
//
callback child.onexit will be called.
namespace
node
{
class
ChildProcess
: ObjectWrap {
public:
static
void
Initialize
(v8::Handle<v8::Object> target);
protected:
static
v8::Handle<v8::Value>
New
(
const
v8::Arguments& args);
static
v8::Handle<v8::Value>
Spawn
(
const
v8::Arguments& args);
static
v8::Handle<v8::Value>
Kill
(
const
v8::Arguments& args);
ChildProcess
() : ObjectWrap() {
ev_init
(&child_watcher_, ChildProcess::on_chld);
child_watcher_.
data
=
this
;
pid_ = -
1
;
}
~ChildProcess
() {
Stop
();
}
//
Returns 0 on success. stdio_fds will contain file desciptors for stdin,
//
stdout, and stderr of the subprocess. stdin is writable; the other two
//
are readable.
//
The user of this class has responsibility to close these pipes after
//
the child process exits.
int
Spawn
(
const
char
*file,
char
*
const
argv[],
const
char
*cwd,
char
**env,
int
stdio_fds[
3
],
int
custom_fds[
3
]);
//
Simple syscall wrapper. Does not disable the watcher. onexit will be
//
called still.
int
Kill
(
int
sig);
private:
void
OnExit
(
int
code);
void
Stop
(
void
);
static
void
on_chld
(
EV_P_
ev_child *watcher,
int
revents) {
ChildProcess *child =
static_cast
<ChildProcess*>(watcher->
data
);
assert
(revents ==
EV_CHILD
);
assert
(child->
pid_
== watcher->
rpid
);
assert
(&child->
child_watcher_
== watcher);
child->
OnExit
(watcher->
rstatus
);
}
ev_child child_watcher_;
pid_t
pid_;
};
}
//
namespace node
#
endif
//
NODE_CHILD_PROCESS_H_
Back
|
FazBrowse Home
|
New Git URL