2011-07-05 38 views
0

我在發帖之前到處搜索,但找不到答案..腳本調用時程序凍結!

我需要計算算法執行時間的一些統計數據(Avg,St. Dev。等..),所以我有得到這個啓動算法並輸出補償時間的C++程序(bb.exe)。

每當我從shell啓動這個程序,它需要它的時間,但工作正常。

因爲執行是不是真快,我寫了使用系統的交流計劃(CalculateStat)()調用

system("bb.exe > output.txt"); 

執行許多次以前的算法,然後計算出需要統計,所以我可以只需啓動「./CalculateStat」,幾個小時後回來查看結果。

CalculateStat輸出(在標準輸出中)每行打印bb.exe。

問題是,當CalculateStat啓動bb.exe時,發生bb.exe無故凍結(每6次計算凍結約2次),所以我必須殺死它(ctrl + c)讓CalculateStat去上。首先,我認爲它可能是來自「系統」調用的問題,所以我編寫了一個perl腳本,它做了幾乎相同的事情,但我遇到了同樣的問題。

任何人有一個建議?

EDIT-- 我因子評分的問題可能是輸出文件的併發訪問,所以我從「CalculateStat」部分讀取文件,只留下連續調用刪除。但它仍然凍結

編輯2 - 哇..它太奇怪了,所以我一直試圖從終端調用原始的bb.exe,它也凍結在那裏..現在我知道問題只是bb隨機凍結,(它在測試過程中從不凍結,它開始凍結在統計計算上..)

無論如何,現在這個問題沒有意義..對不起大家:(

+0

您是否也可以將標準錯誤重定向到文件?它不是在bash中,而是在shell中,不知道它是什麼。 (我想不是command.com了嗎?) – Szocske

+0

我在mac上運行.. 無論如何,我現在正在做它!我會在幾分鐘之內讓你知道! – XelharK

+0

剛剛結冰..我用ctrl-c殺死它,CalculateStat繼續,但沒有輸出錯誤:(它只是凍結.. – XelharK

回答

0

問題實際上是Blackbox ..當應用了奇怪的參數時它凍結了,我通過在主程序上使用一些檢查來解決它。謝謝大家!

0

嗯,我不明白你爲什麼使用C程序重複啓動一個程序。你不能直接從shell腳本執行此操作嗎?如果它再次凍結,它會縮小搜索範圍。

+0

其實我沒有嘗試一個shell腳本,現在我想寫一個,我會讓你知道:) 我只是把結果是類似的,因爲我試圖用Perl腳本,它也凍結 – XelharK

0

您應該能夠看到ps命令執行的過程。我的猜測是它阻止了你沒有重定向的「標準錯誤」文件句柄。 (使用&>而不是>將stdout和stderr重定向到一個文件。)

+0

我也試過重定向標準錯誤(bb.exe&> err.txt),但它只是凍結,並在我ctrl-c它沒有err.txt – XelharK

+0

在「STAT」列中,「ps x | grep bb.exe」命令是什麼意思? – Szocske

0

你怎麼知道它被凍結?什麼都沒有被添加到文件?這可能只是緩衝。除非他們正在寫入終端,否則大多數程序會緩存輸出。