목록전체 글 (766)
치춘짱베리굿나이스

밀린거 적고 있습니다 As beautiful as a shell 주의사항 초반 설계를 확실히 해 둘 것 문자열 파싱 후 최종 반환값 명세, $?의 처리, 파싱 순서 및 execve 동작 순서 등 안 그러면 나중에 갈아엎을 때 일이 커진다 무슨일이 있어도 울지않기 주변 사람들에게 도움 많이 요청하기 혼자서 하면 무조건 해멘다 사전에 공부해야 할 내용 Mandatory 부모 - 자식 프로세스 Fork, Pipe 함수 예제 파이프라인 쌍따옴표, 홑따옴표 정리 시그널 정리 사용가능 함수 사용가능 함수 정리 구현 : minishell 빌트인 함수 exit export unset env cd pwd echo 시그널

kill_and_pause 신호를 kill 하고 50us 쉬어주는 함수 usleep을 주는 이유는, 클라이언트에서 신호를 보내는 속도보다 서버측에서 데이터를 처리하는 속도가 느릴 경우 신호가 씹혀 클라이언트와 서버 모두가 무한 루프에 빠질 수 있다

Mandatory 조건 한 문자 (char) 당 송수신하는 시그널이 8개 이상이면 안 된다 전역변수는 프로그램당 1개 이하 1000글자에 2초 이하, 100글자에 1초 이하, 10글자에 1초 이하 최근 평가지 개편으로 몇 조건들이 사라지면서 쉬운 프로젝트가 됐다 (노션 서식이 망가져 부득이하게 이미지로 대체) 이렇게 하면 클라이언트에서 정확히 한 글자당 8비트씩만 보내고 끝나기 때문에, Mandatory 조건을 만족시킬 수 있다 (단 상당히 불안정해서, 비트를 한 번에 많이 보내려 시도하면 깨질 가능성이 있음)
signal void (*)(int) signal(int sig, void (*handler)(int)); 시그널 처리 방법을 설정한다 몇몇 시그널들은 이미 정의된 행동을 함으로써 처리되는데, 이처럼 기존에 정의된 행동을 그대로 할 지, 시그널을 그냥 무시할지, 아니면 사용자 정의 행동을 하도록 바꿔줄 지 선택할 수 있다 sig는 처리해줄 시그널 번호 *handler는 시그널을 처리해줄 핸들러SIG_IGN을 인자로 넘겨주면 해당 시그널을 무시한다 함수포인터를 넘겨주면 시그널이 들어왔을 때 특정 함수를 호출한다 SIG_DFL을 인자로 넘겨주면 기존에 정의된 방법대로 수행한다 sigset_t 구조체 typedef struct { unsigned int __sigbits[4]; } sigset_t; 시그널은 ..
미니톡 하시는 분이 계셔서 생각나서 올렸읍니다. 주의사항 libft 사용 = 상관없다 이유는.. minitalk 사용가능 함수와 libft 사용가능 함수가 겹치기 때문 (write, malloc, free...) Makefile은 클라이언트, 서버용을 따로 만들어두는 것이 좋을듯? 루트 폴더에 있는 Makefile은 두 Makefile을 같이 진행하는 식으로..) 보너스는 사실상 클라이언트 - 서버간 TCP 구현을 유도한 부분 쉘에서의 큰따옴표 ("") 와 작은따옴표 ('') 차이 큰따옴표는 내부에 변수 ($변수명) 가 있을 경우 해당 변수를 실제 값으로 치환해서 표시 $> temp=$'hello\n\n' $> echo "hello$temp" hello 작은따옴표는 $변수명 을 그대로 출력한다주의: 변수..
파티가 끝나고 난 뒤 문제 파티가 끝나고 나면, 사람들은 누가 파티에 왔는지와 얼마나 많은 사람들이 왔는지를 궁금해한다. 보통 파티는 매우 크게 열리기 때문에, 정확하게 몇 명이 참가했는지 알 수가 없다. 지난주 토요일에 상근이는 자신의 3학년 진학을 기념하면서 매우 성대한 파티를 열었다. 그리고, 상근이는 1m2당 몇 명의 사람이 있었는지 알고있다. 상근이의 파티는 정말 엄청난 규모였기 때문에, 대부분의 신문에도 기사가 실렸다. 상근이는 서로 다른 5개의 신문을 보면서 그 기사에 적혀져있는 참가자의 수를 적었다. 상근이는 자신이 알고있는 참가자의 수가 정확하다고 생각한다. 각 신문 기사에 실려있는 참가자의 수가 몇 명 만큼 잘못되어있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 1m2당 사람의 수..
16진수 문제 16진수 수를 입력받아서 10진수로 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 16진수 수가 주어진다. 이 수의 최대 길이는 6글자이다. 16진수 수는 09와 AF로 이루어져 있고, AF는 1015를 뜻한다. 또, 이 수는 음이 아닌 정수이다. 출력 첫째 줄에 입력으로 주어진 16진수 수를 10진수로 변환해 출력한다. 풀이 #include int main(void) { char str[7]; int index; int num; index = -1; while (++index < 7) str[index] = 0; scanf("%s", str); index = -1; num = 0; while (str[++index]) { num *= 16; if (str[index] = '0&#..
그룹 단어 체커 문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 출력 첫째 줄에 그룹 단어의 개수를 출력한다. 풀이 #include int check_lett..