У меня проблемы с использованием system () из libc в Linux.Мой код такой:
system( "tar zxvOf some.tar.gz fileToExtract | sed 's/some text to remove//' > output" );
std::string line;
int count = 0;
std::ifstream inputFile( "output" );
while( std::getline( input, line != NULL ) )
++count;
Я запускаю этот фрагмент несколько раз, и иногда я нахожу, что count == 0 в конце цикла - из файла не было прочитано ни одной строки.Я смотрю на файловую систему, и файл содержит ожидаемое содержимое (больше нуля).
Мой вопрос: должен ли system () возвращаться, когда вся переданная команда завершена или присутствует присутствиетруба '|'означает, что system () может вернуться до части команды после завершения канала?
Я явно не использовал '&' для фона какой-либо части команды для system ().
Для дальнейшего разъяснения я на практике запускаю многократно несколько фрагментов кода параллельно, ноВыходной файл - это уникальное имя файла, названное в честь идентификатора потока и статического целого числа, увеличенного за каждый вызов system ().Я уверен, что файл, который выводится и читается, уникален для каждого вызова system ().