Thread 연습 프로그램[C, Linux] 안녕하세요. 오늘은 유닉스라는 과목을 들으면서 제가 만든 코드를 올려보려고 합니다. Parameter로 thread의 수를 입력받고, 입력받은 수 만큼 thread를 생성. 각 쓰레드는 생성된 순서의 번호와 자기 thread id를 출력. 생성된 순서의 번호는 thread function의 Parameter로 넘길 것. 코드 코드는 아래와 같습니다. 코드 파일은 깃허브에서 다운받으실 수 있습니다. (귀찮아서 나중에 링크 올릴게요.) 실행 실행은 리눅스 환경에서 했습니다.(라즈베리파이3b+ 라즈비안) 주요 코드 설명 흠흠.. 만들 때 조금 실수를 해서 7개를 만들었는데 0,1,2,3,4,5,6 이렇게 나오네요.(뭐 틀린 것은 아니니까..ㅋㅋㅋ) 일단 값을 넘기는..
thread를 사용한 구구단 프로그램[C, Linux] 안녕하세요. 오늘은 유닉스라는 과목을 들으면서 제가 만든 코드를 올려보려고 합니다. 구구단을 출력하는 thread program thread function이 한번 불리면 한 단을 출력 한번에 한단씩 섞이지 않고 출력(pthread_join사용) 코드 코드는 아래와 같습니다. 코드 파일은 깃허브에서 다운받으실 수 있습니다. (귀찮아서 나중에 링크 올릴게요.) 실행 실행을 하기 위해서 리눅스 환경(라즈베리파이 라즈비안)에서 실행했습니다. 컴파일은 gcc로 아래처럼 했습니다. (-lpthread 주의!!) 이렇게 컴파일한 파일을 실행해보면 아래 사진처럼 정상적으로 실행이 됩니다. (물론 9단까지 다 잘 됩니다.) 먼저 쓰레드 프로그래밍이 좋은점. 1. ..
fork를 사용한 구구단 프로그램[C, Linux] 안녕하세요. 오늘은 유닉스라는 과목을 들으면서 제가 만든 코드를 올려보려고 합니다. 1. 특정한 구구단 하나를 출력하는 구구단 프로그램 2. child process로 구구단을 출력하는 프로그램 2-1. (exec 함수 사용, 자식 프로세스가 출력을 완료할 때 까지 parent process는 대기) 코드 코드는 아래와 같습니다. 코드 파일은 깃허브에서 다운받으실 수 있습니다. (귀찮아서 나중에 링크 올릴게요.) 1. argv[]로 넘겨주면 해당 단을 출력하는 프로그램 2. 자식 프로세스로 위의 프로그램을 실행시키고 매개변수로 2~9까지 넘겨주는 프로그램 실행 해당 파일들은 리눅스환경(라즈베리파이 라즈비안)에서 실행한 결과입니다. 1. argv[]로 2..
여러 개의 프로세스를 사용해서 소수를 출력[C, Linux] 안녕하세요. 오늘은 유닉스라는 과목을 들으면서 제가 만든 코드를 올려보려고 합니다. 100,000까지의 모든 prime number(소수)를 출력하는 프로그램 위의 프로그램과 동일하지만 여러개의 프로세스를 이용하는 프로그램(병렬처리) time 명령을 이용해서 몇 초가 걸리는지 확인 코드 코드는 아래와 같습니다. 코드 파일은 깃허브에서 다운받으실 수 있습니다. (귀찮아서 나중에 링크 올릴게요.) 1. 하나의 프로세스로 소수를 출력하는 프로그램 2. 4개의 프로세스를 사용해서 소수를 출력하는 프로그램 실행 아래의 사진은 라즈베리파이 3b+ (라즈비안)에서 실행했을 때의 사진입니다. 1. 하나의 프로세스로 소수를 구하는 프로그램을 실행했을 때 2. ..
구구단 100단까지 출력하는데 걸리는 시간[C, Linux] 안녕하세요. 오늘은 유닉스라는 과목을 들으면서 제가 만든 코드를 올려보려고 합니다. (ㅎㅎ 근데 굳이 리눅스로 안하고 윈도우로 돌려도 잘돌아갑니다.) 너무 빨리 끝나니까 구구단을 100단까지 출력 gettimeofday()함수를 사용해서 시간을 측정하고 출력 코드 코드는 아래와 같습니다. 코드 파일은 깃허브에서 다운받으실 수 있습니다. https://github.com/ykarr/linux/blob/master/gugutime.c ykarr/linux Contribute to ykarr/linux development by creating an account on GitHub. github.com 실행 위 코드를 실행했을 때의 (일부) 사진입니..
모든 파일 이름과 inode 번호를 출력하는 프로그램[C, Linux] 안녕하세요. 오늘은 유닉스라는 과목을 들으면서 제가 만든 코드를 올려보려고 합니다. 특정 파일/디렉토리 명을 argv[]로 넘겨준다. argv[]로 넘겨받은 폴더의 모든 파일 이름을 출력 argv[]로 넘겨받은 폴더의 모든 inode 번호를 출력 코드 코드는 아래와 같습니다. 코드 파일은 깃허브에서 다운받으실 수 있습니다. https://github.com/ykarr/linux/blob/master/inodename.c ykarr/linux Contribute to ykarr/linux development by creating an account on GitHub. github.com 실행 위의 코드를 컴파일해서 실행해보겠습니다. ..
정보를 출력하고, 권한을 변경하는 프로그램[C, Linux] 안녕하세요. 오늘은 유닉스라는 과목을 들으면서 제가 만든 코드를 올려보려고 합니다. 특정 파일/디렉토리 명을 주면 모든 정보를 출력 권한을 700으로 변경하는 프로그램 코드 코드는 아래와 같습니다. 코드 파일은 깃허브에서 다운받으실 수 있습니다. (귀찮아서 나중에 링크 올릴게요.) 실행 이번에는 이 코드를 컴파일해서 실행해보겠습니다. 아래 사진을 보면 아시겠지만 dirtest라는 폴더를 argument로 주었습니다. 권한을 700으로 설정해주는 코드를 사용해서 argument로 넘겨준 dirtest라는 폴더의 권한이 drwx------이 된 것을 확인할 수 있었습니다. (자세한 건 아랫부분에) 주요 코드 설명 drwxrwx---이런 식으로 되어..
텍스트를 읽어서 4의 배수 파일로 저장[c, Linux] 안녕하세요. 오늘은 유닉스라는 과목을 들으면서 만든 제가 만든 코드를 올려보려고 합니다. 숫자만 쓰여있는 텍스트 파일을 읽고 그중에서 4의 배수만 골라서 four.txt 파일로 만드는 프로그램입니다. four.txt에서 내용을 읽는다. 4의 배수를 저장하는 파일의 이름은 argument로 받는다. 4의 배수를 저장하고 4의 배수의 총 개수를 출력한다. 이정도가 문제의 조건입니다. 텍스트 파일 아래 텍스트 파일을 사용했습니다. 코드 저는 이렇게 만들었습니다. 실행 이번에는 이 파일을 실행해보도록 하겠습니다. (위의 코드에서는 총개수가 fprintf문으로 나오지만 확인을 위해서 그냥 printf문으로 고쳐서 출력했습니다.) ./four
텍스트 파일에서 특정 문자만 읽어서 출력[C, linux] 안녕하세요. 오늘은 유닉스라는 과목을 들으면서 만든 코드를 올려보려고 합니다. 수업 초반에 저수준 파일 입출력을 해보기 위해 만든 예제라서 매우 쉬운 코드입니다. C언어 사용[저수준 파일 입출력] 리눅스(우분투) 환경 lseek()이용할 것 텍스트파일에서 특정한 문자만 printf문으로 출력하는 프로그램(파일의 내용을 알고있음.) 텍스트 파일의 내용. "If I have seen further it is by standing on the shoulders of Giants." 코드 실행 내용 확인= cat명령어 컴파일= gcc 실행= ./ 주요 코드 설명 1. 파일 open 2. 파일 오프셋 위치 지정.=lseek 3. 파일 읽기 read [리눅..
파일을 복사하는 mycp 프로그램 작성 [linux] 안녕하세요. 오늘은 저번에 유닉스라는 과목을 들으면서 만든 코드를 올려보려고 합니다. 1. 파일 이름 두개를 입력받는다. 2. 파일 이름 두개중 하나는 복사할 내용이 있는 파일 3. 나머지 하나는 파일이 없거나 복사할 내용이 아직 없는 파일 이게 기능의 끝입니다. 뭔가 이렇게 보니 있어보이긴하는데 막상 보면 매우 간단한 프로그램입니다. ex: mycp a.txt b.txt -(파일 이름 두 개를 입력받아야 합니다.) 일단 썸네일부터 하나 ㅎㅎ 1. 코드 아래 사진이 mycp코드입니다. 코드 파일은 아래의 깃허브에 있습니다. (블로그엔 사진만 ㅎㅎ) https://github.com/ykarr/linux/blob/master/mycp.c 2. 실행. 원..
정렬 알고리즘 - 퀵 정렬 [Quick sort] 오늘은 정렬 알고리즘 중 하나인 퀵 정렬(Quick Sort)에 관한 내용입니다. (퀵 정렬을 간단하게 소개하고 예제) 퀵 정렬(Quick Sort)이란? n개의 데이터를 정렬할 때 최악의 경우 =O(n^2), 평균적으로는 O(nlogn) 정렬을 하기 위한 데이터에서 데이터 하나를 고르고 그 데이터보다 작은 값과 큰 값으로 구분하여 정렬하는 알고리즘 알고리즘 코드 main함수, Quick_sort함수, Partition함수, SWAP함수로 이루어져 있습니다. 중간중간 결과 확인을 위한 print문이 있습니다. 해당 블로그에는 코드의 사진만 있습니다. 코드의 C파일은 제 Github에서 보실 수 있습니다. https://github.com/ykarr/C/b..
c언어로 만든 선택정렬 알고리즘(Selection Sort). -특정한 일을 수행하기 위한 명령의 유한집합. -만족 조건. 1.입력: 입력하는 데이터가 하나이상이 있어야한다. 2.출력: 적어도 하나의 결과가 있어야한다 3.명확성: 명령이 명확해야한다. 4.유한성: 반드시 종료되어야한다. 5.유효성: 반드시 실행가능해야한다. 선택정렬 알고리즘 -최소정수를 찾을 수 있어야한다. -최소정수와 다른값을 교환한다. -O(n^2) swap(말 그대로 바꿔주는 함수) swap 함수. void SWAP(int *x, int *y) { int z=*x; //z를 선언하고 z에 x가 가르키는 주소의 내용을 넣는다. *x=*y; // x의 주소에 y가 가르키는 주소의 내용을 넣는다. *y=z; //y의 주소에 z의 내용을 ..