사용자로부터 스크립트를 읽고 QProcess
을 호출하여 해당 스크립트를 파일으로 전달해야합니다.QProcess에서 QTemporaryFile을 사용하는 것이 안전합니까?
예를 들어, 사용자는 파이썬 스크립트
import sys
print(sys.copyright)
, 말,이를 삽입하고 난 파일에 해당 스크립트를 넣어, 그 파일을 사용하여 파이썬 인터프리터를 호출해야합니다.
QTemporaryFile
을 사용하려고 생각했는데 그 파일은 프로세스를 시작할 때만 제공되기 때문에 열어 둘 필요가 없습니다.
질문 : QTemporaryFile을 열어 무언가를 쓰고 그 파일을 프로세스에 전달하면 (무한정 계속됩니다) 임시 파일을 파괴 할 수 있습니까? 프로세스에서 해당 파일이 다시 필요할 경우 어떻게해야합니까? 프로세스가 파일을 열어두면 어떻게 될까요?
프로세스에 의해 열린 상태로 유지되면 아무런 문제가 발생하지 않을 것입니다. 아마도 QTemporaryFile은 경로의 연결을 해제하지만 데이터는 여전히 메모리에 액세스 할 수 있습니다.
그러나 프로세스가 파일을 다시 열려고하면 어떻게됩니까? 여기
예로서 조각
는QString script = QInputDialog::getText(blah);
QTemporaryFile tmp;
if (tmp.open()) {
tmp.write(script.toUtf8());
QStringList params;
params << tmp.fileName();
QProcess *proc = new QProcess("/usr/bin/python3");
proc->start(params);
}