cをプロセス出力を取得するために失敗 - これは私が使用していたコードである新しく生成されたプロセス出力を読み取ろうとするとき、私は原因不明の行動を満たしています。#
:それは非常に簡単です
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行程度しか長くないことです。 また、常に出力されます。 –
'm_planStream'から読み込む前に' planWriter'をフラッシュしてみることができます – Pezo