Работа с Process() для создания задачи сетевого мониторинга.Задача() - ускользание котировок
Я пытаюсь отправить единственный аргумент, заданный в таблицу, для задачи (имя процесса для мониторинга). Это должно быть одинарным, поскольку оно может содержать пробелы. (См task.arguments .append (? "- р '! (PROCNAME)") ниже)
task = Process()
pipe = Pipe()
task.launchPath = "/usr/bin/nettop"
task.arguments = ["-j time,interface,state,bytes_in,bytes_out","-k rx_dupe,rx_ooo,re-tx,rtt_avg,rcvsize,tx_win,tc_class,tc_mgt,cc_algo,P,C,R,W","-n","-L 0"]
var procName = currentSelection?.procname
if(procName != nil && procName != "") {
task.arguments?.append("-p '\(procName!)'")
}
task.standardOutput = pipe
task.launch()
Согласно документации нет цитирование требуется, поскольку никакого расширения оболочки не происходит
https://developer.apple.com/reference/foundation/process/1408983-arguments
в частности
объект NSTask преобразует оба пути и строки в качестве аргументов соответствующих строк в стиле с (с использованием fileSystemRepresentation) перед передачей их го e через argv []. Строки в аргументах не претерпевают расширения оболочки, поэтому вам не нужно делать специальные кавычки, а переменные оболочки, такие как $ PWD, не разрешаются.
Однако, кажется, автоматическое ускользание от них и отправка этой экранированной версии в ОС как литерал. Отладчик показывает их как экранированные, независимо от того, удаляю их вручную или нет, поэтому здесь есть некоторое понимание их состояния. Я не могу получить полную командную строку для nettop для отображения в верхнем, htop или ps -f, но, в частности, когда я добавил имя procName в список аргументов задачи, команда не возвращает данные обратно, кроме обычных заголовков неттопов. Это показывает, что неттоп работает, его просто не нащупывает процесс обнюхивания.
Итак, вопрос в следующем: как я могу отправить один аргумент (например, «Google Chrome») в Process() в качестве аргумента?
Я даже не думаю, чтобы разбить его на два аргументы. Он скомпилирован с первого раза и значительно приятнее, чем то, что у меня было. Благодаря! –