我必须从用户那里读取一个脚本QProcess
并将该脚本作为文件调用。
例如,用户插入这个,比如说,Python 脚本
import sys
print(sys.copyright)
我必须将该脚本放在一个文件中,并使用该文件调用 python 解释器。
我想使用 a 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);
}