Я встречаюсь с необъяснимым поведением при попытке чтения вновь порожден результата процесса -В противном случае, чтобы получить конечный результат процесса с #
Это код, я использую:
p.StartInfo.Arguments += "-o Kd.pddl -f Kp.pddl";
StreamWriter planeWriter = new StreamWriter(m_planStream);
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
p.OutputDataReceived += (sender, args) => planeWriter.WriteLine(args.Data);
p.Start();
p.BeginOutputReadLine();
p.WaitForExit();
m_planStream.Position = 0;
StreamReader planReader = new StreamReader(m_planStream);
m_sFFOutput = planReader.ReadToEnd();
List<string> lPlan = new List<string>();
Console.WriteLine(m_sFFOutput);
Это довольно просто, и для большинства выходов он работает, поэтому я говорю, что это необъяснимо.
Я загружаю программу каждый раз с различными входами (Kd.pddl и Kp.pddl). для некоторых входов все работает нормально, но для некоторых входов я вообще не могу получить какой-либо вывод. В любом случае есть выход, так как я запустил его вручную, а для разных входов с разными выходами я могу получить выход.
Даже когда я придерживаюсь и ошибка аргумента - я получаю вывод программы.
Мог использовать некоторые идеи по этому вопросу, я довольно новичок в C#.
Пример для вывода я не могу получить (получил это через ручной ход программы):
ff: parsing domain file
domain 'KTRIANGLE_TIREWORLD_POMDP' defined
... done.
ff: parsing problem file
problem 'KTRIANGLE_TIREWORLD_INST_POMDP__1' defined
... done.
Cueing down from goal distance: 3 into depth [1]
2 [1]
1 [1]
0
ff: found legal plan as follows
step 0: MOVE_CAR__LA1A1_LA1A2
1: MOVE_CAR__LA1A2_LA1A3
2: CHANGETIRE
time spent: 0.00 seconds instantiating 44 easy, 0 hard action templates
0.00 seconds reachability analysis, yielding 19 facts and 44 actions
0.00 seconds creating final representation with 18 relevant facts
0.00 seconds building connectivity graph
0.00 seconds searching, evaluating 4 states, to a max depth of 1
0.00 seconds total time
и когда я воткнуть случайное письмо жука аргументы, я получаю этот выход, двутавровой я в состоянии получить его:
usage of ff:
OPTIONS DESCRIPTIONS
-p <str> path for operator and fact file
-o <str> operator file name
-f <str> fact file name
-i <num> run-time information level(preset: 1)
0 only times
1 problem name, planning process infos
101 parsed problem data
102 cleaned up ADL problem
103 collected string tables
104 encoded domain
105 predicates inertia info
106 splitted initial state
107 domain with Wff s normalized
108 domain with NOT conds translated
109 splitted domain
110 cleaned up easy domain
111 unaries encoded easy domain
112 effects multiplied easy domain
113 inertia removed easy domain
114 easy action templates
115 cleaned up hard domain representation
116 mixed hard domain representation
117 final hard domain representation
118 reachability analysis results
119 facts selected as relevant
120 final domain and problem representations
121 connectivity graph
122 fixpoint result on each evaluated state
123 1P extracted on each evaluated state
124 H set collected for each evaluated state
125 False sets of goals <GAM>
126 detected ordering constraints leq_h <GAM>
127 the Goal Agenda <GAM>
-d <num> switch on debugging
Включает ли программа, с которой вы начинаете, всегда записывать на стандартный вывод или вместо этого иногда писать стандартную ошибку? Это объясняет, почему вы ничего не получаете. – Pezo
нет, всегда стандартное, единственное различие, которое я могу найти между «рабочими» и не работающими выходами, - это рабочие, бит дольше, но только ~ 5 строк дольше или около того. И всегда есть выход. –
Вы можете попробовать очистить 'planWriter' перед чтением из' m_planStream' – Pezo