Доброго времени суток.
Выполняю bash-скрипт в QProcess()
_proc->setProgram("/bin/bash");
_proc->setArguments(QStringList() << "-c" << "nmap -sP " + _address + ".0/24 | grep -E -o \"[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$\" | awk -F \".\" '{ if(($4 > 0) && ($4 < 255)) print $0;}'");
При удалении элемента требуется сразу закрыть процесс. Самым быстрым способом является - kill.
Но, он убивает только /bin/bash, а nmap продолжает висеть пока не выполнится.
Почему так происходит? Если я открою какое-нибудь графическое приложение в терминале и закрою терминал, то графическое приложение тоже закрывается.
Что не так с killом в данном случае?
Пробовал и так:
int PID = _proc->pid();
qDebug() << "PID=" << _address << PID;
if(PID)
{
QProcess::startDetached("/bin/bash",QStringList() << "-c" << "kill " + QString::number(PID));
}
Тоже ничего не работает.
Как удалить полностью процесс, запущенный в QProcess, чтобы и bash, и nmap, и grep, и awk удалились?
Можно killall сделать, но вдруг другая программа использует nmap, то тогда и он закроется.