我必須從用戶讀取一個腳本,並調用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);
}