나는 모두 ENV 변수에서 형성되고 결국 매개 변수 값두 경로에 공백이 있으면 C 프로그램의 파일로 외부 프로그램을 시작하는 방법은 무엇입니까?
start C:\Program Files\VideoLAN\VLC\vlc.exe C:\Documents and Settings\me\My Documents\My Music\09 - Track09.mp3
시작되는 프로그램 및 파일 이름 경로와
int system(command) //in C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\system.c)
를 호출 VS2005로 기존의 C 프로그램을 해결하기 위해 노력하고있어 해당 명령이 char 버퍼의 시작 부분에 추가됩니다. ENV 변수는 다음과 같습니다
%VLCPATH%
값을 내가 XP 명령 프롬프트와 모든 것을이 노력했습니다C:\Documents and Settings\me\My Documents\My Music
을 가지고 값이 C:\Program Files\VideoLAN\VLC
%MUSIC%
잘 작동이있는 경우 경로 공백이 없어야합니다. 또한 작동합니다 :
"%VLCPATH%\vlc.exe" "%MUSIC%\09 - Track09.mp3"
그럼 어떻게해야합니까?
- 편집 env 변수에 따옴표가 있습니까? (그렇게 생각하지 마라)
- 명령에 매개 변수 file가 있는지 확인한 다음 어떻게 든 이스케이프 문자가있는 따옴표를 어쩌면 둘 다 추가하고 start라는 단어를 제거합니까?
- 는 시작 프로그램 경로를 모두 뭔가 분별/I는 윈도우에서
'system()'대신'execv()'를 사용할 수 있습니까? Windows에서의 까다로운 부분은'fork()'입니다. 그러나 'shell'('cmd.exe')을 피하는 것이 아마도 최선의 방법 일 것입니다. –
일반적으로 항상 명령을 인용해야합니다. 실행 파일 자체와 경로 인 모든 매개 변수를 인용하십시오. – Luke
@jonathan : 미안하지만 완전히 이해하지 못했습니다. 나는이 execv에 대해 알아야한다. ... @ 루크 : 그래서 시작 부분을 제거하고 따옴표가 포함되도록 일부 이스케이프 문자로 "문자열"을 조작해야합니까? –