2015-01-07 3 views
1

Qt를 사용하여 Linux에서 네트워크 드라이브 (CIFS)를 마운트하려고합니다. 그러나 그것은 작동하지 않습니다. QProcess없이 또 다른 솔루션이 있습니까?Qt로 마운트 네트워크 드라이브

QProcess connectSamba; 
    QString terminalCommand; 
    terminalCommand = "mount -t cifs //" + ip + "/folder/ " + mountpath; 
    connectSamba.start(terminalCommand); 

답변

3

또 다른 해결책이 있는지 궁금해하고 QProcess가 작동하지 않는 이유를 조사하고 이해해야한다고 생각합니다.

이런 식으로 QProcess::start을 호출하면 첫 번째 토큰 (마운트)을 명령으로 사용하고 공백으로 구분 된 다음 항목 각각을 인수로 전달합니다. 따라서 "//"및 "/ folder /"와 같은 토큰은 mount 명령에 유효한 인수가 아닙니다. 터미널 인수는 하나의 인수가 전달 될 수 있도록 따옴표로 둘러싸여 있음을

QProcess connectSamba; 

QString mountPath = "//" + ip + "/folder/ " + mountpath; 
QString terminalArgs = QString("-c \"mount -t cifs %1\"").arg(mountPath); 
connectSamba.start("/bin/bash", terminalArgs); 
connectSamba.waitForFinished(); 

주 우리는 함께 bash는 인터프리터를 호출하고 -을 - :

이 같은 작업을 수행하여 QProcess를 사용할 수 있습니다 c 인수는 진행중인 문자열에서 명령을받습니다.

+0

고마워요. 그게 날 도와 줬어! 하지만 이제는 두 번째 문제가 있습니다. 읽기 "connectSamba.readAllStandardError()"- 함수는 "mount : 루트 만"--types "옵션을 사용할 수 있습니다"라고 말합니다. -.- – knuut

+0

이것은 다른 질문이므로 답장으로 표시하고 SO에 대해 새 질문을 시작하십시오. 그것은 다른 사람들이 동일하거나 유사한 문제에 대한 답을 찾기가 더 쉬워집니다. – TheDarkKnight

+1

그래, 내가 답변으로 표시;) – knuut

관련 문제