run Cmd
This commit is contained in:
+5
-2
@@ -26,10 +26,10 @@ public:
|
||||
/* Execute the command, if arguments are not given use stdin,out,err
|
||||
else use the given file desciptors. this can also be used
|
||||
to redirect err to out by giving err=1 like in shell */
|
||||
DeadProc operator()(fd_t in=0, fd_t out=1, fd_t err=2);
|
||||
DeadProc operator()(fd_t in=0, fd_t out=1, fd_t err=2) const;
|
||||
|
||||
/* Run the command, don't wait to return like shell's & */
|
||||
Proc detach(fd_t in=0, fd_t out=1, fd_t err=2);
|
||||
Proc detach(fd_t in=0, fd_t out=1, fd_t err=2) const;
|
||||
|
||||
/* Append arguments */
|
||||
void append_args(std::initializer_list<const char*>);
|
||||
@@ -81,6 +81,9 @@ private:
|
||||
/* Like shell's exec */
|
||||
void exec(const Cmd&); /* todo: take Pending? */
|
||||
|
||||
/* Execute the command, like the operator() */
|
||||
DeadProc run(Cmd&);
|
||||
|
||||
/* Run commands in sequence
|
||||
shell:
|
||||
ls
|
||||
|
||||
+11
-6
@@ -28,7 +28,7 @@ namespace _cppipe
|
||||
}
|
||||
}
|
||||
|
||||
inline DeadProc Cmd::operator()(fd_t in, fd_t out, fd_t err)
|
||||
inline DeadProc Cmd::operator()(fd_t in, fd_t out, fd_t err) const
|
||||
{
|
||||
Proc p = createProcess(argv.data(), in, out, err);
|
||||
|
||||
@@ -43,7 +43,7 @@ inline DeadProc Cmd::operator()(fd_t in, fd_t out, fd_t err)
|
||||
return wait(p);
|
||||
}
|
||||
|
||||
inline Proc Cmd::detach(fd_t in, fd_t out, fd_t err)
|
||||
inline Proc Cmd::detach(fd_t in, fd_t out, fd_t err) const
|
||||
{
|
||||
return createProcess(argv.data(), in, out, err);
|
||||
}
|
||||
@@ -154,6 +154,11 @@ inline void exec(const Cmd& cmd)
|
||||
exec_or_die(cmd.argv.data());
|
||||
}
|
||||
|
||||
DeadProc run(const Cmd& cmd)
|
||||
{
|
||||
return cmd();
|
||||
}
|
||||
|
||||
inline PendingCmd operator,(const PendingCmd& cleft, const Cmd& right)
|
||||
{
|
||||
auto& left = const_cast<PendingCmd&>(cleft);
|
||||
@@ -284,9 +289,9 @@ inline PendingCmd operator&(const PendingCmd& cleft, const Cmd& right)
|
||||
return PendingCmd(right);
|
||||
}
|
||||
|
||||
inline std::ostream& operator<<(std::ostream& s, const Cmd& c)
|
||||
inline std::ostream& operator<<(std::ostream& s, const Cmd& cmd)
|
||||
{
|
||||
for(size_t i = 0; i < c.argv.size() - 1; ++i)
|
||||
s << '"' << c.argv[i] << '"' << ' ';
|
||||
return s << std::endl;
|
||||
for(size_t i = 0; i < cmd.argv.size() - 1; ++i)
|
||||
s << '"' << cmd.argv[i] << '"' << ' ';
|
||||
return s;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user