我必须从用户读取一个脚本,并调用QProcess
将该脚本作为文件传递。在QProcess中使用QTemporaryFile是否安全?
例如,用户插入此说,Python脚本
import sys
print(sys.copyright)
,我必须把这个脚本在文件中,并使用该文件调用Python解释器。
我以为使用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);
}