記得之前有寫過,怎麼找不到,只好再寫一次。
透過 web 來做 upgrade 時通常會利用到 cgi,以 boa 為例,他會把 upload 的 file 存成暫存檔(裡面包含了http header),然後呼叫 cgi,並將 stdin 設成由這個暫存檔輸出,並將 stdout直接接上 socket,如此一來,cgi可以直接讀到upload上來的資料,並輕易的透過 printf等function將資訊傳送到瀏覽器,非常方便。
但今天在做 firmware upgrade時,卻發現寫入 flash的資料跟傳上來的資料不同,搞了半天才發現是 stdin 害的,不知為何會參入一些奇怪的東西,最後是在寫 flash前先把 stdin 關掉來解決這個問題。
風花水月六十石
15 年前
沒有留言:
張貼留言