Если x является постоянным, следующее расширение параметра выполняет извлечение подстроки:
b=${a:12:5}
то, где 12 (основанное на нуле) смещение и 5 , является длиной
, Если подчеркивания вокруг цифр являются единственными во входе, можно снять изоляцию с префикса и суффикса (соответственно) на двух шагах:
tmp=${a#*_} # remove prefix ending in "_"
b=${tmp%_*} # remove suffix starting with "_"
, Если существуют другие подчеркивания, это, вероятно, выполнимо так или иначе, хотя более хитрый. Если кто-либо знает, как выполнить оба расширения в отдельном выражении, я хотел бы знать также.
Обоими представленными решениями является чистый удар, без включенного порождения процесса, следовательно очень быстро.
Думаю, вам нужно будет применить собственное решение. Завершение внешнего процесса, созданного с помощью API Process
, можно выполнить с помощью Process.destroy ()
. (Но обратите внимание, что destroy ()
, реализованный в Linux / Unix, выполняет «мягкое» уничтожение, а не SIGKILL
, поэтому внешний процесс может быть в состоянии избежать уничтожения.)
Все остальное непереносимо.
/ proc
. Process
. Это зависит от того, требует ли ваша функция управления использования системных вызовов, недоступных для "чистой" Java-программы. Если вы спуститесь по JNI + собственный маршрут библиотеки, помните, что проблемы с собственным указателем и проблемы с потоками могут убить вашу JVM. Вам также может потребоваться создание и распространение собственной библиотеки для нескольких архитектур и т. Д. Также имейте в виду, что внутренние структуры данных могут отличаться для разных платформ JVM, выпусков и т. Д. И что они могут быть изменены без предварительного уведомления.
Если контекст у вашего кода есть доступ в Интернет, вы можете попробовать использовать Google API для определения языка. http://code.google.com/apis/ajaxlanguage/documentation/
var text = "¿Dónde está el baño?";
google.language.detect(text, function(result) {
if (!result.error) {
var language = 'unknown';
for (l in google.language.Languages) {
if (google.language.Languages[l] == result.language) {
language = l;
break;
}
}
var container = document.getElementById("detection");
container.innerHTML = text + " is: " + language + "";
}
});
И, поскольку вы используете C #, ознакомьтесь с этой статьей о том, как вызывать API из C # .
ОБНОВЛЕНИЕ: хотя вам могут потребоваться правильные разрешения, чтобы читать все там. Обратите внимание, что содержимое / proc специфично для Unix - например, отличается в Linux / Solaris, и я понятия не имею, что это такое. MacOSX.
Если вы хотите убить процесс, который вы создали сами, то стоит обратить внимание на Process.destroy ()
. В противном случае вам придется выполнить kill
. Чтобы использовать это правильно, вы должны отправить SIGINT
, а если это не сработает, то отправить SIGKILL
(для принудительного завершения - я не уверен, что Process. destroy ()
делает это)
Process.destroy ()
. В противном случае вам придется выполнить kill
. Чтобы использовать это правильно, вы должны отправить SIGINT
, а если это не сработает, то отправить SIGKILL
(для принудительного завершения - я не уверен, что Process. destroy ()
делает это) Если вы создали себя сами, то стоит посмотреть на Process.destroy ()
. В противном случае вам придется выполнить kill
. Чтобы использовать это правильно, вы должны отправить SIGINT
, а если это не сработает, то отправить SIGKILL
(для принудительного завершения - я не уверен, что Process. destroy ()
делает это) Системный монитор Gnome (версия диспетчера задач Windows для Linux) использует пакет libgtop2. Документация здесь: http://library.gnome.org/devel/libgtop/stable/
Также вы можете проверить исходный код системного монитора, чтобы узнать, как он использует функции libgtop2.
Вы можете попробовать JNA Posix . Если соответствующие функции не экспортируются этой библиотекой, очень легко добавить для них поддержку с помощью JNA (я сделал это для многих API Win32).