๋ชฉ๋ก๐Ÿ‘ฉ‍๐Ÿ’ป IoT (Embedded)/Raspberry Pi (42)

๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[ํŒŒ์ผ ์ฒ˜๋ฆฌ์™€ ํ‘œ์ค€์ž…์ถœ๋ ฅ] ํ„ฐ๋ฏธ๋„ ์ œ์–ด๋กœ ํ™”๋ฉด ํ˜ธ์ถœํ•˜๊ธฐ tcgetattr & fcsetattr

โญ ํ„ฐ๋ฏธ๋„์˜ ๊ธฐ๋ณธ ์ œ์–ด kbhit() ํ•จ์ˆ˜๋Š” ํ‚ค๋ณด๋“œ์˜ ์ž…๋ ฅ์„ ๊ฐ์ง€ํ•˜๋Š” ํ•จ์ˆ˜ (์œ ๋‹‰์Šค์—์„œ fcntl() ํ•จ์ˆ˜์™€ ํ„ฐ๋ฏธ๋„ ์ œ์–ด๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ) ํ„ฐ๋ฏธ๋„์€ ๋กœ์ปฌ์ด๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด์„œ ์›๊ฒฉ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์œ ๋‹‰์Šค ์‹œ์Šคํ…œ๊ณผ์˜ ๋Œ€ํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋””๋ฐ”์ด์Šค๋กœ /dev/tty ๋””๋ฐ”์ด์Šค ํŒŒ์ผ ์‚ฌ์šฉํ•จ ํ„ฐ๋ฏธ๋„์˜ ๊ธฐ๋ณธ ์ œ์–ด๋Š” termios ๊ตฌ์กฐ์ฒด์™€ ๊ด€๋ จ ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•จ (ํ™”๋ฉด์— ์ถœ๋ ฅํ•  ์ˆ˜ ์—†๋„๋ก ํ„ฐ๋ฏธ๋„ ์ œ์–ด ํ•จ์ˆ˜์ธ tcgetattr, tcsetattr ์ด์šฉํ•ด์„œ ํ„ฐ๋ฏธ๋„์— ๋Œ€ํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์„ค์ •ํ•จ) // kbhit() ํ•จ์ˆ˜๋Š” ํ‚ค๋ณด๋“œ์˜ ์ž…๋ ฅ์„ ๊ฐ์ง€ํ•˜๋Š” ํ•จ์ˆ˜ (์œ ๋‹‰์Šค์—์„œ fcntl() ํ•จ์ˆ˜์™€ ํ„ฐ๋ฏธ๋„ ์ œ์–ด๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ) // ํ„ฐ๋ฏธ๋„์€ ๋กœ์ปฌ์ด๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด์„œ ์›๊ฒฉ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์œ ๋‹‰์Šค ์‹œ์Šคํ…œ๊ณผ์˜ ๋Œ€ํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋””๋ฐ”์ด์Šค๋กœ /dev/..

[ํŒŒ์ผ ์ฒ˜๋ฆฌ์™€ ํ‘œ์ค€์ž…์ถœ๋ ฅ] ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ๋กœ open & read & write

โญ ํŒŒ์ผ ์ฒ˜๋ฆฌ์™€ ํ‘œ์ค€ ์ž…์ถœ๋ ฅ // ํ•˜๋‚˜์˜ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋‹ค์Œ ํŒŒ์ผ๋กœ ๋ณต์‚ฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž // 2๊ฐœ์˜ ํŒŒ์ผ๋ช…์„ ์ž…๋ ฅ๋ฐ›๊ณ  2๊ฐœ์˜ ํŒŒ์ผ์„ ์—ด๊ฑฐ๋‚˜ ์ƒ์„ฑํ•œ ํ›„ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ ์ฝ์–ด์„œ ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ๋กœ ์“ด๋‹ค #include // ์œ ๋‹‰์Šค ํ‘œ์ค€ ์‹œ์Šคํ…œ ์ฝœ #include #include #include #include #include int main(int argc, char **argv) { int n, in, out; char buf[1024]; // ๋ช…๋ นํ˜• ์ธ์ˆ˜๋กœ ๋ณต์‚ฌํ•  ํŒŒ์ผ๋ช…์ด ์—†๋Š” ๊ฒฝ์šฐ์— ์—๋Ÿฌ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒ if (argc < 3) { // write() : ์—ด๋ฆฐ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์“ด ๋งŒํผ ํŒŒ์ผ ๋‚ด์˜ ์˜คํ”„์…‹ ์ฆ๊ฐ€ // ๋ฐ์ดํ„ฐ์˜ ๋ฐ”์ดํ„ฐ ์ˆ˜ ๋ฐ˜ํ™˜ 0 & ์‹คํŒจ..