forked from qt-creator/qt-creator
simplify feeding synchronous processes
QProcess is fully buffered, so there is no point in trying to feed it
chunk-wise.
amends 25264d9b
.
Change-Id: Ie1a32a6ac56f8e21a452b26dfaca4237d3f08d9f
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -482,16 +482,7 @@ SynchronousProcessResponse SynchronousProcess::run(const CommandLine &cmd,
|
|||||||
d->m_process.setProgram(cmd.executable().toString());
|
d->m_process.setProgram(cmd.executable().toString());
|
||||||
d->m_process.setArguments(cmd.splitArguments());
|
d->m_process.setArguments(cmd.splitArguments());
|
||||||
connect(&d->m_process, &QProcess::started, this, [this, writeData] {
|
connect(&d->m_process, &QProcess::started, this, [this, writeData] {
|
||||||
if (!writeData.isEmpty()) {
|
d->m_process.write(writeData);
|
||||||
int pos = 0;
|
|
||||||
int sz = writeData.size();
|
|
||||||
do {
|
|
||||||
d->m_process.waitForBytesWritten();
|
|
||||||
auto res = d->m_process.write(writeData.constData() + pos, sz - pos);
|
|
||||||
if (res > 0) pos += res;
|
|
||||||
} while (pos < sz);
|
|
||||||
d->m_process.waitForBytesWritten();
|
|
||||||
}
|
|
||||||
d->m_process.closeWriteChannel();
|
d->m_process.closeWriteChannel();
|
||||||
});
|
});
|
||||||
d->m_process.start(writeData.isEmpty() ? QIODevice::ReadOnly : QIODevice::ReadWrite);
|
d->m_process.start(writeData.isEmpty() ? QIODevice::ReadOnly : QIODevice::ReadWrite);
|
||||||
|
Reference in New Issue
Block a user