在Gnu系統上,我可以編寫一個類似dies_ok()的C宏,它將fork一個新進程,運行一段代碼,之後它可以寫入共享它沒有退出的一塊內存,然後在父進程中,我可以確定它是否退出。這對測試很有用:確定一段代碼是否退出MSVC程序
dies_ok({int x = 0/0;}, "can't divide by zero");
lives_ok({int x = 3/7;}, "this is a perfectly fine statement");
dies_ok({abort();}, "abort kills the program");
有什麼辦法可以在沒有fork函數的MSVC上完成這個任務嗎?
編輯:繼承人的那個用gcc Linux上的工作原理實現:http://github.com/zorgnax/libtap/blob/master/tap.h
聽起來像是[halting problem](http://en.wikipedia.org/wiki/Halting_problem)。 – kennytm 2010-07-01 16:12:16
不完全,因爲我不在尋找是否有無限循環。我假設正在測試的代碼將完成而不退出或退出。在Perl中,它將等同於使用eval {exit},然後查看是否定義了$ @。如果它沒有停止,我會有太多的問題。 – Jake 2010-07-01 17:01:42