만들고자 하는 프로그램 개요 정의
a.txt 에 쓰여있는 내용을
b.txt 로 복사하며
몇 바이트가 복사된 것인지 메시지를 띄우고자한다.!
1. 먼저 파일 내용을 복사할 함수 'copyfilemalloc'을 들여다보자.
Q1. 만약 동적 메모리 할당이 아닌 bytesp를 static으로 선언한다면?
A. 하나의 쓰레드에서는 읽고 쓰는데 문제가 없지만
2개 이상의 쓰레드가 bytesp를 이용할 경우 둘다 같은 장소에 바이트수를 저장하므로
한 쓰레드가 다른 한쪽의 값을 덮어 씌우는 결과가 발생..
Q2. 동적 메모리 할당의 단점은?
A. 메인 쓰레드가 명시적으로 '해제' 해주지 않으면 메모리 leak 이 발생한다.
Q3. 다른 대안은?
A. 생성자 쓰레드 (create할때 생성된 스레드)가 한 공간을 별도로 또 생성
(여기서는 fd[2] fd[1]: 복사 소스파일 , fd[2] : 타겟 파일 이였는데
fd[3]에다가 읽은 바이트 수를 저장하는 '별도의 공간'을 따로 만들어서
fd[3]의 주소를 반환!!! 하는 방법이 있다.
다음 포스팅에서 예제를 따로 살펴보자 ^ㅡ^
pthread_join 은 기다리는 쓰레드의 리턴상태를 받아오기 위해 이중포인터가 쓰인다.
왜? 타겟 쓰레드는 '일중' 포인터로 반환 할 것이기 때문에 그 주소값을 받으려면 이중포인터를 써줘야지~~ 암암!
copyfilemalloc의 마지막 리턴값은 bytesp로 (int형 포인터)이다!
고놈 (포인터)의 리턴을 받으려면 이중포인터가 필요한것이 당연하다.
C는 역시..포인터를 이해하지 못하면 아무것도 몬한다.
'LINUX > Linux' 카테고리의 다른 글
Signal 개념 (0) | 2019.06.15 |
---|---|
pthread 함수 예제2 (0) | 2019.06.15 |
vim, vi Editor 라인별 복사 / 삭제 / 붙여넣기 명령어 (0) | 2019.06.07 |
하드 링크 , 심볼릭 링크 개념과 간단한 실험예제 (0) | 2019.06.06 |
lstat, stat (0) | 2019.06.06 |