現象:
我們一個版本的測試中在一個程序A中嵌入調用另外一個程序B,卻發現程序B總是自動異常退出。
而之前的版本中,參數傳遞的長度是一樣的,程序B卻能正常運作。
幾經周折,終於發現是由於傳遞的命令行參數過長所致。
教訓:
被啓動程序B的路徑 + 命令行參數 <= MAX_PATH
如:
c:\test.exe aaa
總長度是15,沒問題,但如果此長度超過了MAX_PATH,則會有可能引起test.exe進程的異常。
注:
目標程序運行後並不是在所有情況下都會異常,估計也跟超過的長度有關係,所以目前也在傳遞長參數命令行的朋友發現自己的程序運行正常,請不要得意,儘快調整傳遞方式吧。