๐ญ 220514
๊ฐํฌ ํด๋ฌ์คํฐ ๊ฐ์ ํ๊ฐ ํ ๋ฒ ํ๊ณ ์ด์ฌํ ์๋ค ๋จ๋ค๊ฐ ์๋ค ใ .ใ
๋ค์ ๋ฌ์ ํดในใ ์คํฐ ๋์ฌ ๋๊น์ง GNL์ด๋ printf ๊ณผ์ ๋ค ํด์ค๊ธฐ๋ก ์ฝ์ํ๋ค ํํ !!
๐ญ 220516
GNL ์ ๋๋ก ์์.. #๊ฐ๋ณด์๊ณ
์ผ๋จ fd๋ static ๋ณ์, OPEN_MAX, ํฐ ํ๋ฆ ๋ฑ๋ฑ ๊ณต๋ถํ๋ ์ค (๋ ธ์ ์ ์ ๋ฆฌํ๋ฉด์ !)
์ค๋์ ๋ณด๋์ค ๋ง๊ณ ํ์ ๊ณผ์ ๋ง ํ๋ ค๊ตฌ.. ๐
- BUFFER_SIZE๋งํผ ํ์ผ ์ฝ๊ณ → static ๋ณ์ ์ฌ์ฉํด์ ์ฎ๊ฒจ ๋ถ์ด๊ธฐ
- \n ์ด๋ EOF๋ฅผ ๋ง๋ ๋๊น์ง
- \n๋ฅผ ๋ง๋๋ฉด ๊ฐํ ์ ๊น์ง์ ๋ฌธ์๋ฅผ line์ ํ ๋น & static์๋ ๊ฐํ ์ดํ์ ๋ฌธ์๋ง
ํ ์คํฐ
https://github.com/Tripouille/gnlTester
์ฒซ ํ ์คํฐ์์ ๋ ๊ฒฝ์ฐ์๋ง KO ๋ด๋ค ..!
์๋ ํ ์คํธ๊ธฐ๋ ์์ ํ ์คํฐ ์ฝ๋์์ GNL ํจ์์ ์ธ์ ํ๋๋ฅผ ๋ ๋ฐ๋๋ฐ...
์ํ.. ์ฐพ์๋ณด๋๊น GNL ๊ณผ์ ๊ฐ ์ ๋ฐ์ดํธ๋ ๊ฑฐ์...์....
https://github.com/DontBreakAlex/gnlkiller
https://github.com/Mazoise/42TESTERS-GNL
https://42born2code.slack.com/archives/CU6MU5TB7/p1613244051383700
๐ ๋ ์ฉ
์ด๊ฑด ๋ค๋ฅธ ์๊ธด๋ฐ ๊น์ ์๋๊ฐ ์ ์ฌ์ด์ ธ...์ ๊ตฌ๊ธ๋ง ํด๋ดค๋๋ ์๋ ์ค๋ฅธ์ชฝ ์์ private๋ ๋ณด์ฌ์ค๋ค๊ณ ์ฒดํฌํ๋ฉด ๋๋ค๊ณ ํ๋๋ฐ ๋ ์ด๋ฏธ ๋์ด์์ด์....
๋ ๊ตฌ๊ธ๋ง ํด๋ดค๋ค
https://rlg1133.tistory.com/89
์ฐ์ ํด๊ฒฐ ์...!
์ง๊ธ๊น์ง ๋ด ๊ท์ฌ์ด 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
๊ธฐ๋ณธ์ ์ผ๋ก 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
์์ธ~~
'a c t i v i t y . . ๐ > 42 SEOUL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
42 SEOUL ์นด๋ ํ๋ฃจ์ผ์ง: ft_printf (0) | 2022.07.10 |
---|---|
42 SEOUL ์นด๋ ํ๋ฃจ์ผ์ง: libft ํ ์คํฐ๊ธฐ libft ๊ฒฝ๋ก ์ค์ (0) | 2022.05.16 |
42 SEOUL: 6๊ธฐ 2์ฐจ ๋ผํผ์ ํ๊ธฐ (0) | 2022.04.27 |
42 SEOUL: ๋ผํผ์ ์ค๋น(ํ์ ๋ ์ผ๋ ๊ธ.. ใ ) (0) | 2022.04.27 |
42 SEOUL ์นด๋ ํ๋ฃจ์ผ์ง: libft ๋! (0) | 2022.04.25 |