2013-11-29 3 views
1

Я хотел бы знать, как использовать буферы памяти в качестве потоков io для системной команды с использованием Qt.C++ (Qt), Системная команда с использованием буферов памяти вместо перенаправления

Обычно вы могли бы сделать что-то вроде псевдокода:

Exec Command(" command <inputfile> outputfile"); 

, но я хотел бы сделать всю операцию в памяти.

Я предпочел бы что psudocode вроде:

ByteArray input; 
ByteArray output; 
Exec Command("command name", &input, &output); 

конкретную ссылку, например, или ссылку на ответ будет удивительным. Думаю, мне просто нужно место для начала.

Заранее спасибо.

+2

Убрано C-тэг, потому что Qt определенно не C. – netcoder

+0

Это будет конкретная оболочка, я бы подумал, например. Bash или Csh. Кроме того, в предположении, что 'inputfile' был недавно написан, и вы читаете' outputfile' вскоре после его написания, оба должны быть в кеш-памяти ОС, поэтому эффективно из памяти. Все, что было сказано, в идеале вы бы избегали _shelling-out_ все вместе и находили библиотеку, которая может делать то же самое, что и команда. – Macattack

ответ

1

Один из способов сделать это - создать входные и выходные файлы с отображением памяти и указать полный путь к входным и выходным файлам в обычной командной строке - таким образом он будет эффективно находиться в памяти.

Вы можете создать/получить доступ к тем программным, посмотрите на

Streaming from memory mapped files in Qt

0

я узнал, что вы можете использовать «общей памяти» пространство и использовать его как ссылку на файл. Если у вас есть ссылка на файл, вы можете использовать перенаправление с ним. Это одно из решений.

Смежные вопросы