当前位置: 首页>>代码示例>>C++>>正文


C++ ProcessHandle类代码示例

本文整理汇总了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)
}
开发者ID:1514louluo,项目名称:poco,代码行数:27,代码来源:ProcessTest.cpp

示例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)
}
开发者ID:jacklicn,项目名称:macchina.io,代码行数:31,代码来源:ProcessTest.cpp

示例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);
}
开发者ID:gmav,项目名称:BlitsMeSupportScreen,代码行数:12,代码来源:Environment.cpp

示例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)
}
开发者ID:jacklicn,项目名称:macchina.io,代码行数:51,代码来源:ProcessTest.cpp

示例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());
		}
	}
开发者ID:Chingliu,项目名称:poco,代码行数:42,代码来源:PocoDoc.cpp

示例6: wait

int Process::wait(const ProcessHandle& handle)
{
	return handle.wait();
}
开发者ID:Alcibiades586,项目名称:roadrunner,代码行数:4,代码来源:Process.cpp

示例7: kill

//static 
void Process::kill(const ProcessHandle& handle)
{
    kill(handle.id());
}
开发者ID:hxfxjun,项目名称:firtex2,代码行数:5,代码来源:Process_POSIX.cpp

示例8: CodeClass

	ProcessHandle::ProcessHandle(const ProcessHandle &other)
		: CodeClass(),
		mProcessId(other.processId())
	{
		
	}
开发者ID:sakazuki,项目名称:actiona,代码行数:6,代码来源:processhandle.cpp


注:本文中的ProcessHandle类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。