Мне нужно прочитать скрипт от пользователя и вызвать QProcess
, передав этот скрипт как файл .Можно ли использовать QTemporaryFile с QProcess?
Например, пользователь вставить это, скажем, Python скрипт
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);
}