본문 바로가기
시스템 프로그래밍 공부

시스템 프로그래밍 복습 기록

by 데이터 분석가가 되자 2024. 10. 17.
반응형

대학교 과제

   ■ 포인터와 메모리 관련 정리해보기

   └> 간단한 예제 1개 만들어보기

 

   ■ getopt() 함수 예제 주석달아 설명해보기

 

 

1. 포인터와 메모리 관련 정리해보기

 

   포인터는 변수의 주소를 저장하는 변수입니다. 메모리 관리는 프로그램이 실행되는 동안 할당된 메모리를 효율적으로 사용하는 것을 말합니다. 포인터는 메모리 주소를 직접 다루기 때문에 효율적인 메모리 관리와 관련이 있습니다.

 

   포인터 예제

 

 

#include <stdio.h>

int main() {
	int var = 10;	// 변수 선언
    int *ptr = &var;	// 포인터 선언 및 초기화, 변수 var의 주소를 가리킨다.
    
    // var와 포인터 ptr의 값 출력하기
    printf("변수 var의 값: %d\n", var);
    printf("포인터 ptr이 가리키는 값: %d\n", *ptr);
    printf("포인터 ptr의 주소: %p\n", (void*)ptr);
    
    return 0;
}

 

 

 

2. getopt() 함수 설명 및 예제

 

   getopt() 함수는 명령줄 옵션을 처리할 때 유용합니다. 이 함수는 프로그램에 전달된 옵션을 분석하여 적절한 작업을 수행할 수 있도록 도와줍니다.

 

 

getopt() 함수 예제

 

 

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
	int opt;
    // 옵션 처리 루프
    while ((opt = getopt(argc, argv, "ab:c")) != -1) {
    	switch (opt) {
        	case 'a':
            	printf("옵션 a가 선택되었습니다.\n");
                break;
            case 'b':
            	printf("옵션 b가 선택되었습니다. 인자: %s\n", optarg);
                break;
            case 'c':
            	printf("옵션 c가 선택되었습니다.\n");
                break;
            default:
            	printf("알 수 없는 옵션: %c\n", opt);
        }
    }
    return 0;
}

 

 

이 코드는 -a, -b, -c와 같은 옵션을 처리합니다.

 

-b는 인자를 요구하며, optarg를 통해 인자를 처리합니다.

 

 


 

 

셸 스크립트 문제 해결

 

1. 1부터 100까지 7의 배수와 그 합을 구하는 셸 스크립트

 

더보기
#! /bin/bash

sum=0
for i in {1...100}
do
	if (( i % 7 == 0 ))
    then
    	echo "$i"
        sum=$((sum + i))
    fi
done
echo "7의 배수의 합: $sum"

 

2. 피보나치 수열 10개를 구하는 셸 스크립트

 

#!/bin/bash

a=0
b=1
echo "$a"
echo "$b"
for (( i=2; i<10; i++ ))
do
	next=$((a + b))
    echo "$next"
    a=$b
    b=$next
done

 

3. 반복문을 이용하여 구구단을 표시하는 셸 스크립트

 

#!/bin/bash
for i in {1..9}
do
	for j in {1..9}
    do
    	echo -n "$i * $j = $((i * j))	"
    done
    echo ""
done

 

4. 사용자로부터 3개의 숫자를 입력받아 가장 큰 수와 가장 작은 수를 판별하는 셸 스크립트

 

#!/bin/bash
read -p "첫 번째 숫자: " num1
read -p "두 번째 숫자: " num2
read -p "세 번째 숫자: " num3

max=$num1
min=$num1

if (( num2 > max )); then max=$num2; fi
if (( num3 > max )); then max=$num3; fi

if (( num2 < min )); then min=$num2; fi
if (( num3 < min )); then min=$num3; fi

echo "가장 큰 수: $max"
echo "가장 작은 수: $min"

 

5. 다음과 같은 모양을 표시하는 셸 스크립트 (삼각형 모양 출력)

 

*****

****

***

**

*

 

#!/bin/bash
for i in {5..1}
do
	for (( j=1; j<=1; j++ ))
    do
    	echo -n "*"
    done
    echo ""
done

 

 


 

명령어 정리 과제 해결

 

1. 리눅스의 touch 명령어는 실무에 어떻게 사용될까요?

 

더보기

touch 명령어는 주로 파일의 생성이나 수정 시간을 변경하는 데 사용됩니다.

예를 들어, 새로운 빈 파일을 생성하거나, 파일의 타임스탬프를 변경할 때 사용됩니다.

 

touch 파일이름.txt

 

2. 파일 찾기 find 명령 정리하기

 

더보기

find 명령은 파일이나 디렉터리를 검색하는 데 사용됩니다.

 

find /경로 -name "파일이름"
find /경로 -type d -name "디렉토리이름" # 디렉토리만 검색
find /경로 -size +100M # 100MB 이상의 파일 검색

 

3. 패턴 찾기 grep 명령 정리하기

 

더보기

grep 명령은 파일에서 특정 패턴을 찾는 데 사용됩니다.

 

grep "찾을패턴" 파일이름
grep -r "찾을패턴" /경로 # 하위 디렉터리 포함 검색

 

4. 작업한 명령어들은 history 명령을 이용해 파일로 만들기

 

더보기
history > 이름날짜.history

 

 

 

 

 

 

반응형