๋ฐ์ํ ์ฒ์ฒํ, ๊พธ์คํ../C6 [C : touch] C์ธ์ด๋ก touch ๊ตฌํ . 2023. 12. 18. [C : ls] C๋ก ls ๊ตฌํ ์, -a ์ต์ ์ฒ๋ฆฌ #getopt ์ด์ ํฌ์คํ ์์ getopt๋ฅผ ์์๋ดค๊ณ , ์ด๋ฒ์ ls ๊ตฌํ ์ -a ์ต์ ์ ๋ํ ์ธ์์ฒ๋ฆฌ๋ฅผ ํด๋ณด๋ ค๊ณ ํจ ๋ค๋ฅธ ์ต์ ๋ค๋ ๋์ค์.. ์ธ์ ๊ฐ.. ํด๋ด์ผ์ง... argc๊ฐ 1๊ฐ์ธ์ง (ls ๋ง ์ ๋ ฅ๋ ๊ฒฝ์ฐ) argc๊ฐ 1๊ฐ๊ฐ ์๋์ง (ls์ ์ต์ ์ด ํจ๊ป ์ ๋ ฅ ๋ ๊ฒฝ์ฐ) ๋ฅผ ๋๋ ์ ์์ฑ argc๊ฐ 1๊ฐ์ธ๊ฒฝ์ฐ .์ผ๋ก ์์ํ๋ ์จ๊นํ์ผ์ ์ ์ธํ ๋๋จธ์ง ํ์ผ๋ค์ ์ถ๋ ฅํ๊ณ 1๊ฐ๊ฐ ์๋๊ฒฝ์ฐ์๋ getopt()๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ์ ๋ง๊ฒ ์ถ๋ ฅํ๋๋ก ๊ตฌํ ํ์ฌ ์ต์ ์ a๋ง ์ฌ์ฉ ! #include #include #include #include int main(int argc, char* argv[]) { struct dirent *dir; int c; DIR *dp = opendir("."); if (dp == NULL) { r.. 2023. 12. 18. [C : ls] ls ์ต์ ์ธ์์ฒ๋ฆฌ #getopts /* OPTS์ ์ฃผ์ด์ง ์ต์ ์ ๋ํด ARGV(ํ๋ก๊ทธ๋จ ์ด๋ฆ์ ๋บ ARGC)์ ์ธ์๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์์ ์ ์์ ํ๋กํ ํ์ ์ ๊ฐ์ ธ์ต๋๋ค. ๋ฐฉ๊ธ ์ฝ์ OPTS์์ ์ต์ ๋ฌธ์๋ฅผ ๋ฐํํฉ๋๋ค. ๋ ์ด์ ์ต์ ์ด ์์ผ๋ฉด -1์ ๋ฐํํฉ๋๋ค. ์ธ์ํ ์ ์๋ ์ต์ ๋๋ ์ธ์๊ฐ ๋๋ฝ๋ ์ต์ ์ ๊ฒฝ์ฐ ์ต์ ๋ฌธ์๋ก 'optopt'๊ฐ ์ค์ ๋๊ณ '?'๊ฐ ๋ฐํ๋ฉ๋๋ค. OPTS ๋ฌธ์์ด์ ์ธ์๋๋ ์ต์ ๋ฌธ์์ ๋ชฉ๋ก์ด๋ฉฐ, ์ ํ์ ์ผ๋ก ์ฝ๋ก ์ด ๋ค์ ์์ ํด๋น ๋ฌธ์๊ฐ ์ธ์๋ฅผ ๋ฐ๋๋ก ์ง์ ํ์ฌ 'optarg'์ ๋ฐฐ์นํฉ๋๋ค. OPTS์ ๋ฌธ์ ๋ค์ ์ฝ๋ก ๋ ๊ฐ๊ฐ ์ค๋ ๊ฒฝ์ฐ ํด๋น ์ธ์๋ ์ ํ ์ฌํญ์ ๋๋ค. ์ด ๋์์ GNU 'getopt'์๋ง ํด๋น๋ฉ๋๋ค. ์ธ์ '--'์ ์ธ์ ๊ฒ์์ ์กฐ๊ธฐ์ ์ข ๋ฃํ์ฌ ๋ ์ด์ ์ต์ ์ด ์์์ 'getopt'์ ๋ช ์์ ์ผ๋ก ์๋ฆฝ๋.. 2023. 12. 17. [C : ls] C์ธ์ด๋ก ls ๊ตฌํํ๊ธฐ #dirent ls๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ ํ dirent์ ๋ํด ์์๋ด directory ๋ฅผ ์ด๊ธฐ ์ํด opendir() ํจ์๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์๋ ๋๋ ํฐ๋ฆฌ๊ฒฝ๋ก๋ฅผ ๋ฐ๊ณ , ๋๋ ํฐ๋ฆฌ๋ฅผ ์ด ์ ์์ผ๋ฉด DIR *, ์ด ์ ์์ผ๋ฉด NULL ๋ฐํ /* Open a directory stream on NAME. Return a DIR stream on the directory, or NULL if it could not be opened. This function is a possible cancellation point and therefore not marked with __THROW. */ extern DIR *opendir (const char *__name) __nonnull ((1)); DIR์ ๋ญ์ง ? /* This i.. 2023. 12. 16. ์ด์ 1 2 ๋ค์ ๋ฐ์ํ