Суть проблемы есть такой код:
Код: Выделить всё
CPipedFactorialCalculator::CPipedFactorialCalculator(unsigned int x, const CBaseLog& logger)
: m_pipe ()
, m_initialValue(x)
, m_logger ( logger.createCopy() )
, m_pid ( fork() )
{
...
}Зачем считать факториал в отдельном потоке - потому, что того требует задание на лабу. То же и с пайпами. Я думаю, должно быть так:
1. создается объект пайп,
2. создается объект initialValue
3. создается объект логгер
4. создается объект пид - в этот момент происходит "раздвоение на два процесса"
5. обрабатываются остальные члены класса, не указанные в списке инициализатора.
На самом же деле сначала "раздваивается на два процесса", и лишь затем обрабатывается список инициализатора.
Объясните, пожалуйста, ошибаюсь ли я, или неплохо баг репорт наваять, все-таки незаметный подводный камень.