2010-08-09 2 views
0

Я использую process::start(PATH);, чтобы открыть процесс. Проблема в том, что иногда она находит файл, а иногда нет.C++ проблема с запуском процесса с пути

Например, это работает:

process::start("C:\text.exe"); 

Но это не работает:

process::start("C:\New Folder\text.exe"); 

Любая идея, в чем разница?

+1

Где определяется 'process'? –

ответ

4

Вам необходимо избегать символов \.

В строке С \t есть TAB персонаж. Использование:

process::start("C:\\New Folder\\text.exe"); 
+0

Это была моя первая мысль, но тогда почему работает «C: \ text.exe»? Он должен превратиться в 'C: ext.exe' –

+1

Да, это будет. И если вы введете 'c: ext.exe' (или даже' c: blah blah blah') в командной строке, вы узнаете, что это не дает вам ошибки. Я не уверен, как OP определяет «успех», но если это просто «не сгенерирована ошибка», это объяснит это. – paxdiablo

+0

О, конечно. Так что это, вероятно, комбинация этого и [ответа Саксона] (http://stackoverflow.com/questions/3436857/c-process-start-problem-with-path/3436875#3436875) об экранирующих пробелах –

2

Библиотека может подумать, что с: \ New является программа, которую вы работаете, и папка \ text.exe является аргументом вы передаете к нему.

Вам может понадобиться процитировать его, так что вы звоните так:

"C:\New Folder\text.exe" 

Который, как C++ строки будет выглядеть следующим образом:

process::start("\"C:\\New Folder\\text.exe\""); 
Смежные вопросы