本文整理汇总了Java中com.zaxxer.nuprocess.NuProcess类的典型用法代码示例。如果您正苦于以下问题:Java NuProcess类的具体用法?Java NuProcess怎么用?Java NuProcess使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
NuProcess类属于com.zaxxer.nuprocess包,在下文中一共展示了NuProcess类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: destroy
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
public void destroy() {
log.info("Destroying " + command);
if (this.maybeRunningProcess.isPresent()) {
final NuProcess runningProcess = this.maybeRunningProcess.get();
runningProcess.destroy(false);
try {
runningProcess.waitFor(3, TimeUnit.SECONDS);
if (runningProcess.isRunning())
runningProcess.destroy(true);
} catch (InterruptedException e) {
runningProcess.destroy(true);
}
}
}
示例2: getPid
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
/** Gets the native process identifier for the given process instance. */
@Nullable
public Long getPid(Object process) {
if (process instanceof NuProcess) {
return (long) ((NuProcess) process).getPID();
} else if (process instanceof Process) {
// Until we switch to JDK9, we will have to go with this per-platform workaround.
// In JDK9, `Process` has `getPid()` method that does exactly what we need here.
// http://download.java.net/java/jdk9/docs/api/java/lang/Process.html#getPid--
Long pid = jdk9ProcessId(process);
if (pid == null) {
pid = unixLikeProcessId(process);
}
if (pid == null) {
pid = windowsProcessId(process);
}
return pid;
} else {
throw new IllegalArgumentException("Unknown process class: " + process.getClass().toString());
}
}
示例3: send
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
public void send(String stdin) {
if (this.maybeRunningProcess.isPresent()) {
final NuProcess runningProcess = this.maybeRunningProcess.get();
final ByteBuffer buffer = ByteBuffer.wrap((stdin + "\n").getBytes());
runningProcess.writeStdin(buffer);
}
}
示例4: ChildProcess
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
ChildProcess(
final NuProcess process,
final ProcessSettings settings) {
m_process = process;
m_settings = settings;
m_stdinClosed = new AtomicBoolean(false);
// Handle write in callback
if (settings.getWantWrite()) {
m_process.wantWrite();
}
}
示例5: onPreStart
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
@Override
@SuppressWarnings("unchecked")
public void onPreStart(final NuProcess nuProcess) {
this.process = new DefaultReactiveProcess(nuProcess, exitCode);
Observable.Operator<ProcessOutput<T>, T> combineWithProcess = combineWith(process);
// subscribe to stdout
if (stdoutObserver != null) {
Observable<T> out;
Observable.Operator<T, ByteBuffer> outDecoder = decoder.create();
if (outDecoder == null) {
out = (Observable<T>) this.stdout; // T must be ByteBuffer
} else {
out = stdout.lift(outDecoder);
}
out.lift(combineWithProcess).subscribe(stdoutObserver);
}
// subscribe to stderr
if (stderrObserver != null) {
Observable<T> err;
Observable.Operator<T, ByteBuffer> errDecoder = decoder.create();
if (errDecoder == null) {
err = (Observable<T>) this.stderr; // T must be ByteBuffer
} else {
err = stderr.lift(errDecoder);
}
err.lift(combineWithProcess).subscribe(stderrObserver);
}
}
示例6: cat
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
@Benchmark
public void cat() throws Exception {
NuProcessBuilder builder = new NuProcessBuilder("cat", TEST_FILE);
builder.setProcessListener(new NuAbstractProcessHandler() {
private final CRC32 crc32 = new CRC32();
@Override
public void onExit(int statusCode) {
long crc = crc32.getValue();
if (crc != TEST_CRC32) {
System.err.println("Incorrect CRC32 checksum (" + crc + "); file corruption?");
}
}
@Override
public void onStdout(ByteBuffer buffer, boolean closed) {
// the contents of the file are run through CRC32 just to "do" something with them
// note that update(ByteBuffer) requires Java 8. it's been selected because it doesn't
// inflate the measured allocation rate by allocating buffers internally
crc32.update(buffer);
}
});
NuProcess process = builder.start();
int exitCode = process.waitFor(5L, TimeUnit.MINUTES);
if (exitCode == Integer.MIN_VALUE) {
process.destroy(false);
throw new AssertionError(process + " took longer than 5 minutes to complete");
}
if (exitCode != 0) {
throw new AssertionError(process + " failed (Exit code: " + exitCode + ")");
}
}
示例7: execute
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
private void execute()
{
NuProcessBuilder pb = new NuProcessBuilder(Arrays.asList("ssh", host));
ProcessHandler processHandler = new ProcessHandler();
pb.setProcessListener(processHandler);
NuProcess np = pb.start();
processHandler.write("cd");
processHandler.write("ls -l");
processHandler.write("exit");
processHandler.awaitDisconnection();
}
示例8: createProcess
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
/** {@inheritDoc} */
@Override
public NuProcess createProcess(List<String> commands, String[] env, NuProcessHandler processListener, Path cwd)
{
LinuxProcess process = new LinuxProcess(processListener);
synchronized (LinProcessFactory.class) {
process.start(commands, env, cwd);
}
return process;
}
示例9: createProcess
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
/** {@inheritDoc} */
@Override
public NuProcess createProcess(List<String> commands, String[] env, NuProcessHandler processListener, Path cwd)
{
WindowsProcess process = new WindowsProcess(processListener);
process.start(commands, env, cwd);
return process;
}
示例10: createProcess
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
/** {@inheritDoc} */
@Override
public NuProcess createProcess(List<String> commands, String[] env, NuProcessHandler processListener, Path cwd)
{
OsxProcess process = new OsxProcess(processListener);
process.start(commands, env, cwd);
return process;
}
示例11: hasProcessFinished
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
/** @return whether the process has finished executing or not. */
public boolean hasProcessFinished(Object process) {
if (process instanceof NuProcess) {
return !((NuProcess) process).isRunning();
} else if (process instanceof Process) {
try {
((Process) process).exitValue();
return true;
} catch (IllegalThreadStateException e) {
return false;
}
} else {
throw new IllegalArgumentException("Unknown process class: " + process.getClass().toString());
}
}
示例12: launchProcess
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
/**
* Launches a process and asynchronously sends notifications to {@code listener} on a background
* thread when the process starts, has I/O, or exits.
*/
public LaunchedProcess launchProcess(ProcessExecutorParams params, final ProcessListener listener)
throws IOException {
LOG.debug("Launching process with params %s", params);
ListeningProcessHandler processHandler = new ListeningProcessHandler(listener, params);
// Unlike with Java's ProcessBuilder, we don't need special param escaping for Win32 platforms.
NuProcessBuilder processBuilder = new NuProcessBuilder(processHandler, params.getCommand());
if (params.getEnvironment().isPresent()) {
processBuilder.environment().clear();
processBuilder.environment().putAll(params.getEnvironment().get());
}
if (params.getDirectory().isPresent()) {
processBuilder.setCwd(params.getDirectory().get());
}
NuProcess process = BgProcessKiller.startProcess(processBuilder);
if (process == null) {
throw new IOException(String.format("Could not start process with params %s", params));
}
LOG.debug("Successfully launched process %s", process);
// This should be set by onPreStart().
Preconditions.checkState(processHandler.process != null);
processRegistry.registerProcess(processHandler.process.nuProcess, params, ImmutableMap.of());
return processHandler.process;
}
示例13: verifyExternalProcessInfo
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
void verifyExternalProcessInfo(long pid, NuProcess process, ProcessExecutorParams params)
throws Exception {
ProcessInfo info = processesInfo.get(pid);
assertThat(info, CoreMatchers.instanceOf(ExternalProcessInfo.class));
assertEquals(pid, ((ExternalProcessInfo) info).pid);
assertSame(process, ((ExternalProcessInfo) info).process);
assertEquals(params, ((ExternalProcessInfo) info).params);
}
示例14: onPreStart
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
@Override
public void onPreStart(final NuProcess process) {
m_handler.onPreStart(new ChildProcess(process, m_settings));
}
示例15: onStart
import com.zaxxer.nuprocess.NuProcess; //导入依赖的package包/类
@Override
public void onStart(final NuProcess process) {
m_handler.onStart(new ChildProcess(process, m_settings));
}