a c t i v i t y . . ๐Ÿ‹/42 SEOUL

42 SEOUL ์นด๋Žƒ ํ•˜๋ฃจ์ผ์ง€: GNL! ๐Ÿน

H J 2022. 6. 5. 17:18

๐Ÿ’ญ 220514

๊ฐœํฌ ํด๋Ÿฌ์Šคํ„ฐ ๊ฐ€์„œ ํ‰๊ฐ€ ํ•œ ๋ฒˆ ํ•˜๊ณ  ์—ด์‹ฌํžˆ ์ˆ˜๋‹ค ๋–จ๋‹ค๊ฐ€ ์™”๋‹ค ใ…Ž.ใ…Ž

๋‹ค์Œ ๋‹ฌ์— ํดใ„นใ…“์Šคํ„ฐ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ GNL์ด๋ž‘ printf ๊ณผ์ œ ๋‹ค ํ•ด์˜ค๊ธฐ๋กœ ์•ฝ์†ํ–ˆ๋‹ค ํŒŸํŒ…!!


๐Ÿ’ญ 220516

GNL ์ œ๋Œ€๋กœ ์‹œ์ž‘.. #๊ฐ€๋ณด์ž๊ณ 

์ผ๋‹จ fd๋ž‘ static ๋ณ€์ˆ˜, OPEN_MAX, ํฐ ํ๋ฆ„ ๋“ฑ๋“ฑ ๊ณต๋ถ€ํ•˜๋Š” ์ค‘ (๋…ธ์…˜์— ์ •๋ฆฌํ•˜๋ฉด์„œ !)

 

์˜ค๋Š˜์€ ๋ณด๋„ˆ์Šค ๋ง๊ณ  ํ•„์ˆ˜ ๊ณผ์ œ๋งŒ ํ•˜๋ ค๊ตฌ.. ๐Ÿ˜‡

 

  1. BUFFER_SIZE๋งŒํผ ํŒŒ์ผ ์ฝ๊ณ  → static ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•ด์„œ ์˜ฎ๊ฒจ ๋ถ™์ด๊ธฐ
    • \n ์ด๋‚˜ EOF๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€
  2. \n๋ฅผ ๋งŒ๋‚˜๋ฉด ๊ฐœํ–‰ ์ „๊นŒ์ง€์˜ ๋ฌธ์ž๋ฅผ line์— ํ• ๋‹น & static์—๋Š” ๊ฐœํ–‰ ์ดํ›„์˜ ๋ฌธ์ž๋งŒ

ํ…Œ์Šคํ„ฐ

https://github.com/Tripouille/gnlTester

 

GitHub - Tripouille/gnlTester: Tester for the get_next_line project of 42 school

Tester for the get_next_line project of 42 school. Contribute to Tripouille/gnlTester development by creating an account on GitHub.

github.com

์ฒซ ํ…Œ์Šคํ„ฐ์—์„œ ๋‘ ๊ฒฝ์šฐ์—๋งŒ KO ๋–ด๋‹ค ..!

๋”๋ณด๊ธฐ

 

์•„๋ž˜ ํ…Œ์ŠคํŠธ๊ธฐ๋Š” ์•„์˜ˆ ํ…Œ์Šคํ„ฐ ์ฝ”๋“œ์—์„œ GNL ํ•จ์ˆ˜์— ์ธ์ž ํ•˜๋‚˜๋ฅผ ๋” ๋ฐ›๋Š”๋ฐ... 

์•„ํ•˜.. ์ฐพ์•„๋ณด๋‹ˆ๊นŒ GNL ๊ณผ์ œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ ๊ฑฐ์˜€...์Œ....

https://github.com/DontBreakAlex/gnlkiller

 

GitHub - DontBreakAlex/gnlkiller: A checker for 42's get_next_line.

A checker for 42's get_next_line. Contribute to DontBreakAlex/gnlkiller development by creating an account on GitHub.

github.com

 

https://github.com/Mazoise/42TESTERS-GNL

 

GitHub - Mazoise/42TESTERS-GNL: This is a complete tester for the 2019 version of the 42 project GetNextLine.

This is a complete tester for the 2019 version of the 42 project GetNextLine. - GitHub - Mazoise/42TESTERS-GNL: This is a complete tester for the 2019 version of the 42 project GetNextLine.

github.com

 

https://42born2code.slack.com/archives/CU6MU5TB7/p1613244051383700

 

Slack

์ด ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•œ ๊ณ„์ •์ด ์•„์ง ์—†๋‚˜์š”?์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ดˆ๋Œ€์— ๊ด€ํ•ด ๋ฌธ์˜ํ•˜์„ธ์š”. ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ ค๊ณ  ํ•˜๋‚˜์š”? ์ƒˆ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ฐœ์„ค

42born2code.slack.com

 

 

 

๐Ÿ˜“ ๋ ์šฉ

๋”๋ณด๊ธฐ

์ด๊ฑด ๋‹ค๋ฅธ ์–˜๊ธด๋ฐ ๊นƒ์— ์ž”๋””๊ฐ€ ์•ˆ ์‹ฌ์–ด์ ธ...์„œ ๊ตฌ๊ธ€๋ง ํ•ด๋ดค๋”๋‹ˆ ์ž”๋”” ์˜ค๋ฅธ์ชฝ ์œ„์— private๋„ ๋ณด์—ฌ์ค€๋‹ค๊ณ  ์ฒดํฌํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ๋‚œ ์ด๋ฏธ ๋˜์–ด์žˆ์–ด์„œ....

 

๋” ๊ตฌ๊ธ€๋ง ํ•ด๋ดค๋‹ค

https://rlg1133.tistory.com/89

 

Git) ๋‚ด commit์ด ์ž”๋””๋ฐญ์— ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š” ์—๋Ÿฌ ํ•ด๊ฒฐ

๋…ธํŠธ๋ถ์„ ๋ฐ”๊พผ ํ›„ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฐœ๋ฐœํ™˜๊ฒฝ ์…‹ํŒ…์—์„œ ์ด์Šˆ๋ฅผ ๊ฒช๊ณ ์žˆ๋‹ค. ์ผ๋‹จ ์ฝ”๋“œ๋ฅผ ์งœ๋Š”๋ฐ์— ์ง‘์ค‘ํ•˜๋Š๋ผ ๊ทธ๋™์•ˆ ๋ˆˆ์น˜ ์ฑ„์ง€ ๋ชปํ–ˆ์ง€๋งŒ ํ•œ ๋™์•ˆ ๋‚ด ์ปค๋ฐ‹์ด ์ž”๋””๋ฐญ์— ๋ฐ˜์˜๋˜์ง€ ์•Š๊ณ ์žˆ์—‡๋‹ค ใ…œใ…œ ํ™”๋ฉด ๋’ท

rlg1133.tistory.com

์šฐ์™€ ํ•ด๊ฒฐ ์™„...!

์ง€๊ธˆ๊นŒ์ง€ ๋‚ด ๊ท€์—ฌ์šด cute ์ž”๋””๋“ค........... ๋Œ๋ ค๋‚ด........

๊ทธ๋ž˜๋„ libft ํ•  ๋•Œ ์ž์ฃผ ํ–ˆ๋Š”๋ฐ ์‚ฅ..

 

ํ•˜ํ•˜... ๋ผํ”ผ์‹  ํ•  ๋•Œ๋ถ€ํ„ฐ ์—ด์‹ฌํžˆ ์ปค๋ฐ‹ํ–ˆ๋Š”๋ฐ ์ž”๋”” ํ•˜๋‚˜๋„ ์—†๋”.. 2์›”์—” ์ง„์งœ ๋งค์ผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ปค๋ฐ‹ํ–ˆ๋Š”๋ฐ..

์•ž์œผ๋กœ ๋” ์—ด์‹ฌํžˆ ์ปค๋ฐ‹ํ•˜์ง€ ๋จธ ~ ^..^


๐Ÿ’ญ 220517

์˜ค๋Š˜ ํ•˜๋ฃจ๊ฐ€ ๊ฐ€๊ธฐ ์ „์— ๊ณต๋ถ€ ์ข€ ๋” ํ•˜๋ ค๊ณ  ์•‰์Œ!

์ผ๋‹จ ๋ณด๋„ˆ์Šค ํŒŒํŠธ ํŒŒ์ผ๋“ค์„ ๋งŒ๋“ค์–ด์คฌ๋‹ค

์™ ์ง€ ๊ทธ๋ƒฅ ์ฝ”๋“œ ๋’ค์—Ž์„ ๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ..

 

๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ๊ฑธ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ฝ”๋“œ๋ฅผ ์งœ๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.. ใ…Ž.ใ…Ž

 

๊ณผ์ œ ์—…๋ฐ์ดํŠธ๋œ ์ดํ›„๋กœ ์œ ํšจํ•œ ํ…Œ์Šคํ„ฐ๋Š” ๋งจ ์ฒซ ๋ฒˆ์งธ ๊ฒƒ๋ฟ์ด๋ผ๋Š” ์‚ฌ์‹ค๋„ ์•Œ๊ฒŒ ๋๋‹ค..!

์˜ค๋Š˜์€ ๋”ฑ ํ•œ ์‹œ๊ฐ„ ์ฑ„์šฐ๊ณ  ์—ฌ๊ธฐ๊นŒ์ง€ ํ•ด์•ผ์ง•


๐Ÿ’ญ 220520

์‚ฌ์‹ค ๋…ธ์…˜์— ๋‹ค ์ •๋ฆฌํ•ด๋’€๋Š”๋ฐ ๊ทธ๋ƒฅ.. ๊ฐ‘์ž๊ธฐ ์—ฌ๊ธฐ์—๋„ ์กฐ๊ธˆ ๋‚ด์šฉ ๋„ฃ๊ณ  ์‹ถ์–ด์„œ ๋ณต๋ถ™ํ•ด์™”๋‹ค

read

#include <unistd.h>
ssize_t read(int fd, void *buf, size_t len)

ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ๋ฅผ len ๋งŒํผ ์ฝ๊ณ  buf์— ์ €์žฅํ•˜๋Š” ํ•จ์ˆ˜๋กœ ์ •์ƒ์ ์œผ๋กœ ์ฝ์—ˆ๋‹ค๋ฉด ์ฝ์€ ๋ฐ”์ดํŠธ ์ˆ˜, ์‹คํŒจํ–ˆ๋‹ค๋ฉด -1, eof์— ๋„๋‹ฌํ–ˆ๋‹ค๋ฉด 0 ๋ฐ˜ํ™˜

์„ฑ๊ณต → ์ฝ์–ด์˜จ ๋ฐ”์ดํŠธ ์ˆ˜ ๋ฐ˜ํ™˜

์‹คํŒจ → -1 ๋ฐ˜ํ™˜

ํŒŒ์ผ ๋์—์„œ ์‹œ๋„ → 0 ๋ฐ˜ํ™˜

• ssize_t ๋Š” signed int ๋กœ, ์‹คํŒจ ์‹œ ์Œ์ˆ˜ ๊ฐ’์ธ -1์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜ํ™˜ํ˜•์ด ssize_t ์ด๋‹ค.

 

์šฐ์™€ read_line ํ•จ์ˆ˜ ์ˆ˜์ •ํ–ˆ๋”๋‹ˆ ๋‹ค OK ๋œฌ๋‹ค!

  • read_line : buf์— ๋ฒ„ํผ ์‚ฌ์ด์ฆˆ๋งŒํผ ํŒŒ์ผ์„ ์ฝ์–ด ์ฝ์€ ๋ฐ”์ดํŠธ ์ˆ˜ ๋ฐ˜ํ™˜ → save์— buf ์ถ”๊ฐ€ + ๋ฆฌ์…‹๋˜๋Š” save free

๐Ÿ’ญ 220522~23

update_save ํ•จ์ˆ˜ ๋ณ€์ˆ˜๋ช…์ด๋ž‘ ๊ฐ€๋…์„ฑ ์ข‹๊ฒŒ ์ˆ˜์ •ํ•˜๋Š” ์ค‘~

๋ณด๋„ˆ์Šค ํŒŒํŠธ์— multiple fd ๋ถ€๋ถ„์— ๋ช‡ ๊ฐœ๋Š” KO ๋œจ๊ณ  SIGSEGV ๋– ์„œ ๋” ์ˆ˜์ •ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค

์–ด๋–ค ์ƒํ™ฉ์—์„œ fd๊ฐ€ ๋œจ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค,, ใ… 

๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์€ ๋‹ค ์ดํ•ด๋˜๋Š”๋ฐ multiple fd๋ผ๋Š” ๊ฑฐ๋Š” fd๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ๋“ค์–ด์™”๋‹ค๋Š” ๋œป์ธ๊ฐ€??

์ผ๋‹จ bonus.cpp ์‚ดํŽด๋ณด๋ฉด์„œ ์–ด๋–ค ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ ํ‹€๋ ธ๋Š”์ง€ ๋ณด๊ณ  ์žˆ๋Š”๋ฐ gnl์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ž๊ฐ€ null, "0"์ผ ๋•Œ ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค


๐Ÿ’ญ 220525

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ gnl ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ utils์— ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์žˆ๊ธธ๋ž˜ ์‚ดํŽด๋ดค๋Š”๋ฐ ์ˆ˜์ •๋˜๊ธฐ ์ „ ๊ณผ์ œ์ฒ˜๋Ÿผ fd, ๊ธฐ๋Œ€๋˜๋Š” ๋ฆฌํ„ด ๊ฐ’ ๋‘ ๊ฐœ๋ฅผ ๋ฐ›๊ณ  get_next_line ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’๊ณผ ๋น„๊ตํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์˜€๋‹ค

void gnl(int fd, char const * expectedReturn)
{
	char *  gnlReturn = get_next_line(fd);
	if (expectedReturn == NULL)
		check(gnlReturn == NULL);
	else
		check(!strcmp(gnlReturn, expectedReturn));
	free(gnlReturn);
	iTest++;
}

 

gnl์ด ์–ด๋–ค ํ•จ์ˆ˜์ธ์ง€ ํ™•์ธํ•ด๋ณด์•˜์œผ๋‹ˆ๊นŒ ์™œ ๋ณด๋„ˆ์Šค ํŒŒํŠธ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋œจ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ฉด์„œ ๊ฐœ๋…์„ ์ข€ ๋” ๊ณต๋ถ€ํ•ด๋ดค๋Š”๋ฐ ๋‚ด๊ฐ€ ๋ฐ”๋ณด์˜€๋‹ค!!!!

๊น€ํ˜„์ง€ ๋ฐ”๋ณด...... ๋ณด๋„ˆ์Šค ํŒŒํŠธ์—์„œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ fd๋กœ๋„ ํ•œ ๋ผ์ธ์„ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” ๊ฑฐ์˜€๊ณ  ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฆฌ์ŠคํŠธ๋‚˜ OPEN_MAX๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„์„ ํ•ด์ค„ ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ๋‚˜๋Š” ์ฃผ๋ณ€ ์‚ฌ๋žŒ๋“ค์˜ ์ถ”์ฒœ์„ ๋ฐ›์•„์„œ OPEN_MAX๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„์„ ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค

 

์ด๋•Œ static *save[OPEN_MAX]๋กœ ์„ ์–ธํ•ด์คฌ์—ˆ๋Š”๋ฐ ๊ฐ fd๋งˆ๋‹ค ์ €์žฅ๋˜์–ด์žˆ๋Š” ๋ฌธ์ž์—ด๋“ค์„ save[fd]๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค....

๊ทธ๋Ÿฐ๋ฐ ๋‚œ ๊ทธ๋ƒฅ ๊ธฐ์กด ์ฝ”๋“œ์—์„œ *save ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์„ ํ–ˆ์œผ๋‹ˆ.. ๋‹น์—ฐํžˆ ํ‹€๋ ธ์ง€ใ…œใ…œใ…œ

 

์—ฌ๋Ÿฌ ๊ฐœ์˜ fd๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด๋ฐ ํ•˜๋‚˜๋ฐ–์— ์‚ฌ์šฉ ์•ˆ ํ•˜๊ณ  ์žˆ์—ˆ์œผ๋‹ˆ... ๊ณผ์ œ๋ฅผ ์งˆ์งˆ ๋Œ๋ฉด์„œ ์กฐ๊ธˆ์”ฉ ํ•˜๋Š๋ผ ๊ณผ์ œ์—์„œ ์–ด๋–ค ๊ฑธ ์š”๊ตฌํ•˜๊ณ  ์žˆ์—ˆ๋Š”์ง€ ํ๋ ค์กŒ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค..ใ…œใ…œ

ํ…Œ์Šคํ„ฐ๊ธฐ์—์„œ๋Š” ์ด์ œ ๋‹ค OK ๋œฌ๋‹ค !

์ด์ œ ๋‚ด๊ฐ€ main๋ฌธ ๋งŒ๋“ค์–ด์„œ ์˜ˆ์‹œ ์—ฌ๋Ÿฌ ๊ฐœ ํ•ด๋ณด๊ณ  ๊ฐœ๋… ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•˜๊ณ  ๋งˆ๋ฌด๋ฆฌ ์Šฌ์Šฌ ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค

 

์“ธ๋ฐ์—†๋Š” ๊ฑธ๋กœ ๋ฉฐ์น ์ด๋‚˜ ์†Œ๋น„ํ•œ๊ฑฐ๋ฌ˜.. ํ•œ ์ผ์ฃผ์ผ??

๊ทผ๋ฐ ์ง€๊ธˆ ์ฝ”๋“œ๋ฅผ ์งœ๋ฉด์„œ ๊ณ ๋ฏผ๋˜๋Š” ๋ถ€๋ถ„์ด fd์˜ ์ตœ๋Œ“๊ฐ’์ด OPEN_MAX๋ผ๋Š”๋ฐ... fd๊ฐ€ OPEN_MAX๋ณด๋‹ค ํด ๋•Œ๋Š” ์‹คํ–‰์ด ๋˜๋ฉด ์•ˆ ๋˜๋Š” ๊ฑด๊ฐ€..? ๊ฐœ๋…์ด ํ—ท๊ฐˆ๋ฆฐ๋‹ค..

๊ทธ๋Ÿผ fd๋Š” ์ž…๋ ฅ๋ฐ›๋Š” ๊ฐ’์ด๋‹ˆ๊นŒ OPEN_MAX๋ณด๋‹ค ํด ๋•Œ๋Š” ๊ณ ๋ คํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค..

๊ทธ๋Ÿฌ๋ฉด.. ๋ณด๋„ˆ์Šค ํŒŒํŠธ ๋ง๊ณ  ํ•„์ˆ˜ ๊ณผ์ œ์—์„œ๋„..?? (๋ฌผ์–ด๋ด์•ผ๊ฒ ๋‹ค)

 

์•„๋ž˜ ํ‹ฐ์Šคํ† ๋ฆฌ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜๋ฉด์„œ ๋งˆ์ € ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค

https://code4human.tistory.com/123

 

ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ(File Descriptor)๋ž€?

ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ (FD, File Descriptor)๋ž€, Unix OS์—์„œ ๋„คํŠธ์›Œํฌ ์†Œ์ผ“๊ณผ ๊ฐ™์€ ํŒŒ์ผ์ด๋‚˜ ๊ธฐํƒ€ ์ž…๋ ฅ/์ถœ๋ ฅ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ถ”์ƒํ‘œํ˜„์ด๋‹ค. ์ฆ‰, ์‹œ์Šคํ…œ์œผ๋กœ ๋ถ€ํ„ฐ ํ• ๋‹น๋ฐ›์€ ํŒŒ์ผ์ด๋‚˜ ์†Œ์ผ“์„

code4human.tistory.com

 

๊ธฐ๋ณธ์ ์œผ๋กœ fd, OPEN_MAX, BUFFER_SIZE, read ํ•จ์ˆ˜, static ๋ณ€์ˆ˜, static ํฌ์ธํ„ฐ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด์„œ ์–ด๋–ค ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ fd๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณต๋ถ€ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค! ํ‹ฐ๋น„ ์ข€๋งŒ ๋ณด๊ณ  ํ•ด์•ผ์ง€  ๐Ÿ˜ธ

 


๐Ÿ’ญ 220602

๋ฏธ๋ฃจ๊ณ  ๋ฏธ๋ฃจ๋‹ค๊ฐ€ ๋“œ๋””์–ด ๊ฐœ๋… ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•˜๋Ÿฌ ์Šค๋ฒ…์— ๋‚˜์™”๋‹ค (์ง‘์—์„œ๋Š” ๋’น๊ตด๋Œ€๋Š๋ผ ์ ˆ๋Œ€ ์•ˆ ํ•ด์„œ.. ^^..)

๊นƒํ—™ ๋ฆฌ๋“œ๋ฏธ์—๋„ ๊ณผ์ œ๋งˆ๋‹ค ๋…ธ์…˜ ๋งํฌ ๊ฑธ์–ด๋‘๊ณ  ์—„์ฒญ ์—ด์‹ฌํžˆ gnl ์ •๋ฆฌํ•˜๊ณ  ๊ฐœ๋… ๊ณต๋ถ€ํ–ˆ๋‹ค..

 

์š”์ฆ˜ ๋งจ๋‚  ๋’น๊ตด๋Œ€์„œ.. ๋†€๊ณ ๋จน๊ณ  ์ž๋Š๋ผ ์ƒํ™œํŒจํ„ด๋„ ๊ทธ์ง€๋ผ์„œ ์ง„์งœ ๊ณ„~~~์† ํ˜„ํƒ€ ์˜ค๋‹ค๊ฐ€ ๊ฒจ์šฐ ์˜ค๋Š˜๋ถ€ํ„ฐ ์ง„์งœ ๊ณต๋ถ€ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ๋งˆ์Œ๋จน์—ˆ๋‹ค ใ…Ž.ใ…Ž

์ข€๋งŒ ์‰ฌ๊ณ  ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ƒ๊ฐํ•ด๋ณด๋ฉด์„œ ๋” ๋Œ๋ ค๋ด์•ผ์ง€~


๐Ÿ’ญ 220604

ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ๋Œ๋ฆฌ๋ ค๊ณ  main๋ฌธ์„ ์งœ๋‹ค๊ฐ€ gcc์— ์—ฌ๋Ÿฌ ์˜ต์…˜๋“ค๋กœ ์ปดํŒŒ์ผ์„ ํ•˜๋Š”๋ฐ ์•„๋ž˜์™€ ๊ฐ™์ด ์—๋Ÿฌ๊ฐ€ ๋– ์„œ ์ฐพ์•„๋ณด๋‹ˆ๊นŒ

Undefined symbols for architecture arm64:

ํ—ค๋”๋ฅผ ์ธํด๋ฃจ๋“œ ํ•ด์ฃผ๋”๋ผ๋„ ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ๊นŒ์ง€ ํ•จ๊ป˜ ์ปดํŒŒ์ผํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ƒˆ๋กœ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค

 

๊ทธ๋ฆฌ๊ณ  gnl์—์„œ๋Š” gcc -D ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ BUFFER_SIZE๋ฅผ ์ง€์ •ํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ๋Œ๋ ค์คฌ๋‹ค

gc -D BUFFER_SIZE=4 test/main.c get_next_line.c get_next_line_utils.c

์—ฌ๊ธฐ์„œ gc๋Š” ๋‚ด๊ฐ€ ์„ค์ •ํ•ด๋†“์€ ๊ฒƒ์ด๋‹ค! ( gc == gcc -Wall -Werror -Wextra) ๊ทธ๋ฆฌ๊ณ  main.c๋Š” test๋ผ๋Š” ํด๋” ์•ˆ์— ์žˆ๋‹ค!

 

์ผ๋‹จ ๊ธฐ๋ณธ๊ณผ์ œ main๋ฌธ์ด๋ž‘ ๋ณด๋„ˆ์Šค main๋ฌธ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ fd ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฑธ ์ด๋Ÿฐ ์‹์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค ใ…Ž.ใ…Ž


๐Ÿ’ญ 220605

ํด๋Ÿฌ์Šคํ„ฐ์— ๊ฐ€๊ธฐ ์ „์— defence๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ๋งˆ์ง€๋ง‰์œผ๋กœ ๋” ์ •๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค

 

๊ฐ‘์ž๊ธฐ ํ—ท๊ฐˆ๋ ค์„œ ๋Œ€์ถฉ ์ ์–ด๋ณด๋ฉด

์ผ๋‹จ ํŒŒ์ผ ์ฝ๋Š” ๊ฑด open์œผ๋กœ, redirection์€ ํ‘œ์ค€ ์ž…๋ ฅ๊ณผ ํ‘œ์ค€ ์ถœ๋ ฅ์˜ ๋ฐฉํ–ฅ์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ์ค€ ์ž…๋ ฅ์„ ๋ฐ›๊ณ  ./a.out < test/file ์ด๋Ÿฐ ์‹์œผ๋กœ ํŒŒ์ผ์„ ์ฝ์–ด์„œ ํ‘œ์ค€ ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ํ‘œ์ค€ ์ถœ๋ ฅ์„ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  stdin์€ ํ‘œ์ค€ ์ž…๋ ฅ์ด๊ธฐ ๋•Œ๋ฌธ์— get_next_line(0) ๊ฐœ์ˆ˜๋งŒํผ ์ž…๋ ฅ๋ฐ›๊ฒŒ ๋œ๋‹ค

 

๊ทธ๋ฆฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค

leaks -atExit -- ./a.out

 

๋…ธ์…˜์—๋„ ๋” ์ž์„ธํ•˜๊ฒŒ ์ถ”๊ฐ€ํ•ด๋’€๋‹ค

 

๊ฐœํฌ ํด๋Ÿฌ์Šคํ„ฐ ์™€์„œ ํ‰๊ฐ€ 3๊ฐœ ์™€๋‹ค๋‹ค ์žก์•„๋‘๊ณ !

ํ†ต๊ณผ!!! V^^v

์•—์‹ธ~~

์‹ ๋‚œ๋‹น~~