LINUX.ORG.RU

лексемы


0

0

Мне нужно запустить программу через execvp().
Команда хранится в QString. Необходимо разделить ее на две
части, если передается параметр (на саму команду и параметр).

Средствами QT не удалось. Я находил индекс пробела, но вот
скопировать в строку из другой строки с n-го по m-й символ так и не смог.
Решил сишными функциями. Разделить на лексемы strtok() не хочет.
Введя were wolf выдает were were.

Помогите (жедательно через методы QString) разделить строку на команду и
аргумент (последний может и не вводиться).

Вот как я делал в последнем случае:

char *command = new char [255], *argument = new char [255], *buf = new char [255], *space = " ";
    int res = 0;
    
    if ( !(fork())){
	QMessageBox::information(this, "Error", QString("Process not created: %1").arg(errno), 0);
	exit(0);
    }
    strcpy(buf, this->com_e->currentText().ascii());
    strcpy( command, strtok( buf, " ")); printf("\nCommand: %s", command);
    strcpy( argument, strtok( buf, " ")); printf("\nArgument: %s\n", argument);
    
    if (execvp( command, argument) == -1){
	QMessageBox::information(this, "Error", QString("Program not started: %1").arg(errno), 0);
	exit(0);
    }
anonymous

> Средствами QT не удалось
QString::section, QString:left, QRegExp::match, я Вас уверяю, все получится

phoenix ★★★★
()
Ответ на: комментарий от phoenix

Тогда, не приведете ли пример запуска процесса (без полного пути - $PATH) с аргументом? ;)

Я с ним долго мучался...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.