本文整理汇总了C++中ProcessHandle类的典型用法代码示例。如果您正苦于以下问题:C++ ProcessHandle类的具体用法?C++ ProcessHandle怎么用?C++ ProcessHandle使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ProcessHandle类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: name
void ProcessTest::testLaunchRedirectIn()
{
#if !defined(_WIN32_WCE)
std::string name("TestApp");
std::string cmd;
#if defined(_DEBUG)
name += "d";
#endif
#if defined(POCO_OS_FAMILY_UNIX)
cmd = "./";
cmd += name;
#else
cmd = name;
#endif
std::vector<std::string> args;
args.push_back("-count");
Pipe inPipe;
ProcessHandle ph = Process::launch(cmd, args, &inPipe, 0, 0);
PipeOutputStream ostr(inPipe);
ostr << std::string(100, 'x');
ostr.close();
int rc = ph.wait();
assert (rc == 100);
#endif // !defined(_WIN32_WCE)
}
示例2: name
void ProcessTest::testIsRunning()
{
#if !defined(_WIN32_WCE)
std::string name("TestApp");
std::string cmd;
#if defined(_DEBUG) && (POCO_OS != POCO_OS_ANDROID)
name += "d";
#endif
#if defined(POCO_OS_FAMILY_UNIX)
cmd = "./";
cmd += name;
#else
cmd = name;
#endif
std::vector<std::string> args;
args.push_back("-count");
Pipe inPipe;
ProcessHandle ph = Process::launch(cmd, args, &inPipe, 0, 0);
Process::PID id = ph.id();
assert (Process::isRunning(ph));
assert (Process::isRunning(id));
PipeOutputStream ostr(inPipe);
ostr << std::string(100, 'x');
ostr.close();
int POCO_UNUSED rc = ph.wait();
assert (!Process::isRunning(ph));
assert (!Process::isRunning(id));
#endif // !defined(_WIN32_WCE)
}
示例3: isItTheSamePathAsCurrent
bool Environment::isItTheSamePathAsCurrent(unsigned int pId)
{
StringStorage currModulePath, testedModulePath;
ProcessHandle pHandle;
pHandle.openProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
0, pId);
pHandle.getProcessModulePath(&testedModulePath);
getCurrentModulePath(&currModulePath);
return currModulePath.isEqualTo(&testedModulePath);
}
示例4: defined
void ProcessTest::testLaunchArgs()
{
#if defined (_WIN32) && !defined(_WIN32_WCE)
std::string name("TestApp");
std::string cmd = name;
std::vector<std::string> args;
args.push_back("-echo-args");
args.push_back("simple");
args.push_back("with space");
args.push_back("with\ttab");
args.push_back("with\vverticaltab");
// can't test newline here because TestApp -echo-args uses newline to separate the echoed args
//args.push_back("with\nnewline");
args.push_back("with \" quotes");
args.push_back("ends with \"quotes\"");
args.push_back("\"starts\" with quotes");
args.push_back("\"");
args.push_back("\\");
args.push_back("c:\\program files\\ends with backslash\\");
args.push_back("\"already quoted \\\" \\\\\"");
Pipe outPipe;
ProcessHandle ph = Process::launch(cmd, args, 0, &outPipe, 0);
PipeInputStream istr(outPipe);
std::string receivedArg;
int c = istr.get();
int argNumber = 1;
while (c != -1)
{
if ('\n' == c)
{
assert(argNumber < args.size());
std::string expectedArg = args[argNumber];
if (expectedArg.npos != expectedArg.find("already quoted")) {
expectedArg = "already quoted \" \\";
}
assert(receivedArg == expectedArg);
++argNumber;
receivedArg = "";
}
else if ('\r' != c)
{
receivedArg += (char)c;
}
c = istr.get();
}
assert(argNumber == args.size());
int rc = ph.wait();
assert(rc == args.size());
#endif // !defined(_WIN32_WCE)
}
示例5: preprocess
Preprocessor* preprocess(const std::string& file)
{
Path pp(file);
pp.setExtension("i");
std::string exec = config().getString("PocoDoc.compiler.exec");
std::string opts = config().getString("PocoDoc.compiler.options");
std::string path = config().getString("PocoDoc.compiler.path", "");
bool usePipe = config().getBool("PocoDoc.compiler.usePipe", false);
std::string popts;
for (std::string::const_iterator it = opts.begin(); it != opts.end(); ++it)
{
if (*it == '%')
popts += pp.getBaseName();
else
popts += *it;
}
StringTokenizer tokenizer(popts, ",\n", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM);
std::vector<std::string> args(tokenizer.begin(), tokenizer.end());
args.push_back(file);
if (!path.empty())
{
std::string newPath(Environment::get("PATH"));
newPath += Path::pathSeparator();
newPath += path;
Environment::set("PATH", path);
}
if (usePipe)
{
Poco::Pipe inPipe;
ProcessHandle proc = Process::launch(exec, args, 0, &inPipe, 0);
return new Preprocessor(proc, new Poco::PipeInputStream(inPipe));
}
else
{
ProcessHandle proc = Process::launch(exec, args);
proc.wait();
return new Preprocessor(proc, new std::ifstream(pp.getFileName().c_str()), pp.getFileName());
}
}
示例6: wait
int Process::wait(const ProcessHandle& handle)
{
return handle.wait();
}
示例7: kill
//static
void Process::kill(const ProcessHandle& handle)
{
kill(handle.id());
}
示例8: CodeClass
ProcessHandle::ProcessHandle(const ProcessHandle &other)
: CodeClass(),
mProcessId(other.processId())
{
}