private void createProcess() throws IOException {

		String[] command = buildCommand();
		IOException exc = null;
		isDisposed = true;
		try {
			process = Runtime.getRuntime().exec(command);
			InputStream in = process.getInputStream();
			OutputStream out = process.getOutputStream();
			reader = new BufferedReader(new InputStreamReader(in));
			writer = new PrintWriter(out);
			
			checkForError(command);
			
			isDisposed = false;
		}
		catch (IOException e) {
			exc = e;
		}
		finally {
			if (isDisposed) {
				if (process != null) {
					process.destroy();
				}
				if (!getAndSetErrorDisplayed()) {
					String errorDetail = "";
					if (exc != null) {
						errorDetail = exc.getMessage();
					}
					errorDetail = "GNU Demangler executable may not be compatible with your system and may need to be rebuilt.\n" +
							"(see GettingStarted.md, 'Building Native Components').\n\n" +
							errorDetail;		
					Msg.showError(this, null, "Failed to launch GNU Demangler process", errorDetail);
				}
				if (exc == null) {
					throw new IOException("GNU Demangler process failed to launch (see log for details)");
				}
				throw exc;
			}
		}

		String key = getKey(applicationName, options);
		processesByName.put(key, this);
	}
Gets the default GNU demangler native process
@param name the specific executable name to launch
@param nativeOptions the arguments string to pass to the native demangler
@return the process
@throws IOException if the process cannot be started
Ghidra/Features/GnuDemangler/src/main/java/ghidra/app/util/demangler/gnu/GnuDemanglerNativeProcess.java