분류 전체보기 212

가변 인자(va_start, va_arg, va_copy, va_end)

C언어에서 va_start, va_arg, va_copy, va_end을 사용하려면 #include #include #include void f(int n, ...) { va_list v1; va_start(v1, n); int a; for (int i = 0; i < n; i++) { a = va_arg(v1, int); printf("%d", a); } va_end(v1); } intmain() { f(5, 1, 2, 3, 4, 5); } int n == 몇 개 가변인자를 넘겨줄 것인가. 매개변수들이 넘어올 때 int형 보다 작은 범위는 int로 double 보다 작은 범위는 double로 포인터는 void*로 넘어옴 float, char는 안 넘어감 va = variable argument va_l..

42Seoul/printf 2023.05.20

printf 반환형(반환형이 왜 int일까?)

반환형이 void가 아니라 왜 int형일까? int ft_printf(const char *, ...); printf의 반환 값 == 출력하는 문자 개수(개행 포함) 예제를 통해서 확인 #include intmain() { //f(5, 1, 2, 3, 4, 5); int num = printf("aaa\\n"); printf("%d", num); } 결과 참고 블로그 [C언어] printf 함수가 반환하는 값 [C언어] printf 함수가 반환하는 값 printf 함수는 화면에 문자열을 출력하는 기능을 하는데, 그 자체로도 값을 반환합니다. printf 함수가 반환하는 값은 문자열 길이입니다. printf 함수의 반환값을 확인하는 방법은 printf 함수를 변수 bigpicture123.tistory.com

42Seoul/printf 2023.05.20

3. 컴퓨터 시스템의 동작 원리

1. 컴퓨터 시스템의 구조 컴퓨터 시스템의 구조 내부장치 : CPU, 메모리 외부장치 : 디스크, 키보드, 모니터, 네트워크 장치 입출력 장치(Input-Output:I/O) 컴퓨터 내부로 데이터가 들어오는 것을 입력(input) 컴퓨터 외부로 데이터가 나가는 것을 출력(output) 키보드로부터 입력 받아 컴퓨터가 연산 처리 한 후 그 결과를 모니터에 출력하는 경우를 대표적인 입출력이라고 함. 따라서 컴퓨터 외부장치를 입출력 장치라고도 부른다. 컨트롤러 메모리 및 입출력장치 등의 각 하드웨어 장치에는 컨트롤러라는 것이 있다. 컨트롤러는 일종의 작은 CPU를 말한다. 이 CPU가 제어를 함. ex) 디스크 컨트롤러, 메모리 컨트롤러 커널 여러 프로그램이 동시에 수행되는 시스템을 위한 운영체제 프로그램 수..

OS/OS-42study 2023.05.09

2. 운영체제의 개요

1. 운영체제의 정의 운영체제(operating system)는 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어를 말한다. ‘시스템’ : 기반이나 틀이 되는 하드웨어 장치 💡 운영체제에 왜 영어로 시스템이라는 것이 사용될까? 소프트웨어인 운영체제에 시스템이라는 용어가 사용된 것은 하드웨어가 운영체제와 한 몸이 되어야만 사용자에게 쓰일 수 있는 진정한 컴퓨터 시스템이 되기 때문. 좀 더 쉽게 설명 전원을 켰을 때 운영체제가 없으면 그 컴퓨터는 고철 덩어리에 불과하며, 이와 같은 고철 덩어리를 동작시키기 위해서 필요한 기본적인 소프트웨어가 바로 운영체제라는 뜻 사용자 입장에서는 하드웨어 자체를 다룬다는 것이 쉽지 않으므로, 하드웨어 위에 기본적으로 운영체제를 탑재해 전원을 켰을 때 손쉽게 사용할 수 있는 상..

OS/OS-42study 2023.05.09

Bonus implement

Lighttpd 설치 sudo apt-get install lighttpd 서버활성화 sudo systemctl enable lighttpd.service#enable with start up sudo systemctl start lighttpd.service 서버 정지 sudo systemctl stop lighttpd.service PHP 설치 및 연동 다음 명령어를 통해 웹 서버와 연동할 PHP 를 설치한다. PHP-FPM 은 PHP FastCGI Process Manager의 약자 sudo apt install php php-fpm 설치 후, 다음 명령어를 통해 php.ini 파일의 cgi.fix_pathinfo=1 행 주석을 해제한다! 파일 위치: /etc/php/7.4/fpm 열면 뭐 겁나 많..

42Seoul/Born2beroot 2023.05.09

cron implement

• 관리자들이 고정된 간격을 갖는 지정 날짜 및 시간마다 주기적으로 정기적인 작업을 처리하기 위해 소프트웨어를 실행토록 환경을 설정하는 시간기반 job스케줄러 성격의 데모 프로세스 • 사용자는 crontab명령으로써 cron이 crontab파일에 접근하여 쉘 명령어들이 주어진 일정에 주기적인 실행하도록 작업 목록을 정의하는 방법만 이해하면 된다 corn 설정 및 수정 sudo crontab -e 밑에 하얀 거 추가해주면 됨 wall → 모든 로그인한 사용자에게 메시지를 표시할 때 쓰는 명령어 주기 설정 분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7) bash /home/script/test.sh | wall 매분마다 test.sh 실행 및 wall 사용하여 터미널에 출력 45 5..

42Seoul/Born2beroot 2023.05.09

monitoring.sh implement

→ 이 친구는 root 파일에 있어야함. 우리가 처음 루트로 로그인 하면 이 위치에 있을 거임 여기 말고 전체 코드 #!/bin/bash #1 printf "#Architecture: " uname -a #2 printf "#CPU physical : " cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l #3 printf "#vCPU : " grep -c processor /proc/cpuinfo #4 printf "#Memory Usage: " free --mega | grep Mem | awk '{printf"%d/%dMB (%.2f%%)\\n", $3, $2, $3/$2 * 100 }' #5 printf "#Disk Usage: " df -Bm |..

42Seoul/Born2beroot 2023.05.09

Port Forwading implement

→ 가상 머신에서 나의 컴퓨터와 연결해서 터미널을 연동시킬 수 있음. port을 사용하기 위해 su root로 들어가기 sudo 없으면 설치 3. ufw 없으면 설치 $ sudo apt install ufw # ufw 설치 $ sudo ufw status verbose # ufw 상태 확인(디폴트는 inactive) $ sudo ufw enable # ufw 활성화 $ sudo ufw default deny # 기본으로 들어오는 패킷 거부(deny)로 설정 $ sudo ufw status # 정책 확인하기 이이제 status에 추가해준 것이 없어서 그냥 active라고 뜸 4242 포트 허용 (가상 환경에서) 하는 이유 ufw 는 기본적으로 모든 포트에 대해 들어오는 연결을 차단하기에, SSH 연결을 받..

42Seoul/Born2beroot 2023.05.09

password.defs implement

libpam-cracklib → 일단 첫 번째로 우리는 패스워드를 만들 때 과제에서 주어진 부분에 적합하게 만들기 위한 것을 추가해줄 것임. 패스워드 정책을 살펴보자 파일 위치 : /etc/pam.d/common-password 패스워드 정책 설정을 위해 다음 모듈을 설치한다 이 모듈은 사용자가 입력한 암호가 시스템의 사전과 여러 규칙들로 패스워드 강도를 검사한다. 패스워드를 입력받고, 검사에서 문제가 없으면 재입력 받는다. 문제가 없으면 패스워드가 후속 모듈로 전달되고, 새 인증 토큰으로 설치됨. apt install libpam-cracklib 2. 파일에 들어가서 수정해줘야함 우리는 cracklib.so 옆에 부분에 이걸 추가해줄 것임 retry=3 : 암호 입력 가능 횟수 minlen=10 : 암..

42Seoul/Born2beroot 2023.05.09

dhclient 없애기, ip 설정 implement

현재 네트워크 소켓 상태를 보면 tcp랑 udp가 있다. 근데 과제에서 udp 없이 만들어야함 원래 상태는 포트가 22일거임!!! udp를 지워야함!! 나의 상태 우리는 SSH server만 이용하기 위한 환경 구축과 해당하는 포트만 열어두고 싶음 근데 dhclient(udp)라는 게 있음(옆으로 좀 더 펼쳐보면 있음) DHCP, lP를 자동으로 할당해주고 다시 반환하는 동적 IP할당을 받고 있다는 뜻임. 이를 제거하기 위해 고정 IP를 설정할 것임. 가상환경 ip 확인 고정할 ip를 확보하기 위해 가상환경 ip를 확인 여기서 뭘까용~~~ 바로바로 10.0.2.15이다!! 2. 가상환경 gateway 확인 가상환경의 gateway = 10.0.2.2 3. IP설정 /etc/network/interface..

42Seoul/Born2beroot 2023.05.09