2020-11-18(Wed)
Last updated
Last updated
ํ์ต ๋ ์ง // 2020-11-18(์)
ํ์ต์๊ฐ // 9:00~22:00
ํ์ต ๋ฒ์ ๋ฐ ์ฃผ์ // webserv ์ค๋ฅ
๋๋ฃ ํ์ต ๋ฐฉ๋ฒ // yohai๋๊ณผ ํ์ดํ๋ก๊ทธ๋๋ฐ, sanam๋๊ณผ ํ ์
ํ์ต ๋ชฉํ // CGI ํต์ ์ ๋ฐ์ํ๋ ์ค๋ฅ์ ์์ธ์ ํ์ธํ์ฌ ์ ๊ฑฐํ๋ค.
์์ธ ํ์ต ๋ด์ฉ
๋ฌผ๋ก write ๋์ fd๊ฐ ๋ซํ ์ํ์ธ๋ฐ ๋ถ๊ตฌํ๊ณ writeํ ๋ ๋ฐ์ํ๋ ๊ฒ์์ ์์ง๋ง, CGI pipe๋ ๋ซ์ ์ ์ด ์๋ค. ๊ทธ๋ผ ๋๋์ฒด ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ฑธ๊น??
์์งํ ๋งํ๋ฉด ์๋ฒฝํ๊ฒ ์์ธ์ ์์๋ธ ๊ฒ์ ์๋๋ค. ํ์ง๋ง ์ถ์ ์ ํด๋ณผ ์ ์๋ค.
writeํ๋ ์ค์ ๋ฐ์ํ๋ broken_pipe ๋ write ๋์ fd๊ฐ ๋ซํ์ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ค.
๊ทธ๋ฌ๋ ๋๋ pipe์ side_in์ ๋ซ์ ์ ์ด ์๋ค. ๊ทธ๋ ๋ค๋ฉด?
์๋ง ์์ํ๋ก์ธ์ค, ๊ทธ๋ฌ๋๊น CGI ์คํํ๋ก์ธ์ค์์ ํ์ดํ๋ฅผ ๋ซ์๊ฑฐ๋ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์ด exit๊ฐ ์คํ๋์ด ์์์ด ๋ฐํ๋์์ ๊ฒ์ด๋ค.
์ฌ๋ฐ๋๊ฒ ์ด๋ ์ฐ๋ฆฌ๊ฐ CGI์ write ํด์ฃผ๋ ์๋๋ฅผ usleep์ผ๋ก ์๊ธ์กฐ์ ํด์ฃผ๋ฉด ์ผ์ถ ํด๊ฒฐ๋๋ค๋ ๊ฒ์ด๋ค. ์์์ปจ๋ฐ CGI๊ฐ pipe buffer๋ก๋ถํฐ readํ๋ ๊ฒ๋ณด๋ค ์๋ฒ๊ฐ pipe buffer์ writeํ๋ ์๋๊ฐ ํจ์ฌ ๋น ๋ฅด๋ฉด ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ฒ ์๋๊น ์ถ๋ค. ํ
์คํฐ๋ก ์ฃผ์ด์ง CGI๊ฐ read๋ฅผ ํด์ค๋ ์๋๊ฐ ์ข ๋๋ฆฐ ํ์ ๋ฒํผ๊ฐ ํฐ์ง๋๊ฑด ์๋๊น? pipe buffer๊ฐ ๊ฐ๋์ฐผ๋ค๋ฉด writeํ ๋ blocking ๋์ง๋ง, ์ฐ๋ฆฌ๋ non-blocking ๋๊ณ ์์ผ๋.. ์ด ๋ถ๋ถ์ send์ MSG_DONTWAIT
์ต์
์ ๋๋ฉด errno๋ก ๊ด์ธก ๊ฐ๋ฅํ๋ฐ, subject์์ errno ๊ด์ธก์ ๊ธํ๊ณ ์์ผ๋ฏ๋ก ๋์์ด ๋์ง ์์ ๊ฒ ๊ฐ๋ค. (์๋ฐํ ๋งํ๋ฉด read/write ์ค errno ๊ด์ธก๋ง ๊ธํ๊ณ ์๋ ๊ฒ ๊ฐ๊ธฐ๋ ํ๋ฐ.. subject๊ฐ ์ฐธ ๋ชจํธํ๋ค;)
ํ์ต ๋ด์ฉ์ ๋ํ ๊ฐ์ธ์ ์ธ ์ดํ
ํ usleep์ฐ๋ ๊ฒ์ ๋ญ๊ฐ ์ฐ์ํ์ง ์์ ๋ฐฉ๋ฒ์ผ๋ก ๋๊ปด์ง๋๋ฐ ์ฐ๊ณ ๋ง์์ต๋๋ค. write์ read์ ์๋๊ฐ ๋ค๋ฅด๋ค๋ ์ ์ ์๊ณ ์์์ง๋ง buffer์ ๋ํ ์ง์์ด ๋ถ์กฑํ ๊ฒ์ ๋๊ผ์ต๋๋ค. ํนํ non-blocking์ํฉ์์ ๊ณ์ write๋ฅผ ํ๊ฑฐ๋ read๋ฅผ ํ๋ฉด ์ด๋ค ํ์์ด ์ผ์ด๋๋์ง๋ ๋ช ํํ ๋ชจ๋ฅด๋ค์, ์์นญ๋ฅ๋ ฅ์ด ๋ถ์กฑํ์ง errno๊ฐ ๋์ ธ์ง๋ ๊ฒ ์ธ์ broken_pipe ์๋ฌ๊ฐ ๋ฐ์ํ ๋งํ ์ผ์ ์ฒ ์ ํ ์ถ์ธกํด์ ํด๊ฒฐํ์ต๋๋ค. ํ ์คํฐ๋ก ์ฃผ์ด์ง cgi tester๊ฐ ์ด๋ค ์ฝ๋๋ก ๊ตฌํ๋์ด์๋์ง ์๋ค๋ฉด ๋์์ด ๋ ํ ๋ฐ, ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง์ด๋ผ๋ ํด๋ด์ผํ๋?! ์ถ์์ต๋๋คใ ใ ๋ฌผ๋ก ์๋งํ ๋ถํํ ๋ฌผ์ด๋ณด๋๊ฑธ ๋จผ์ ํด์ผ๊ฒ ์ต๋๋ค.
๋ค์ ํ์ต ๊ณํ
CGI ํต์