반응형

프로그래밍 기술 604

표준 입출력 라이브러리

파일 입출력에 관한 system 호출(open, close, write, ...)을 사용하여 응용 프로그램을 제작하는 비용을 줄일 수 있게 ANSI C 표준기구에서는 표준 입출력 라이브러리를 제공합니다. 표준 입출력 라이브러리는 C언어 창시자인 데니스리치에 의해 1975년에 만들어졌으며 지금도 거의 개발 초기 모습을 유지하고 있습니다. 표준 입출력 라이브러리는 개발자 편의성과 효율성이 높은 파일 입출력을 제공하기 위해 만들었습니다. 시스템 호출을 이용하여 파일 입출력 작업을 하면 시스템 호출할 때마다 커널을 통해 입출력을 수행하여 시스템 효율이 떨어질 수 있습니다. 표준 입출력 라이브러리를 이용하여 파일 입출력 작업을 하면 파일 스트림 버퍼를 이용하여 시스템 호출 횟수를 줄여줍니다. 예를 들어 write..

파일 삭제, unlink, remove, rmdir 함수

리눅스 시스템에서는 파일을 삭제하는 시스템 호출로 unlink, remove, rmdir 함수를 제공하고 있어요. unlink는 연결 계수를 1 감소하는 시스템 호출이고 rmdir은 비어있는 디렉토리를 지울 때 사용하는 시스템 호출입니다. remove는 표준 입출력 라이브러리 함수로 입력 인자로 전달하는 이름이 파일일 때는 unlink와 같고 디렉토리일 때는 rmdir과 같습니다. /********************************************************************** * ex_unlink.c * * exmple source – test unlink * ***************************************************************..

[프로젝트 개발 공정 가이드] 3. 요구 분석 및 정의 단계

3. 요구 분석 및 정의 단계 요구 분석 및 정의 단계는 기획 문서를 바탕으로 해야 할 일이 무엇인지 파악하는 단계입니다. 그런데 비지니스 프로젝트에서 해야 할 일은 개발자 마음대로 하는 것이 아니라 프로젝트와 이해 관계가 있는 이해 관계자들의 요구 사항에 맞게 만들어야 하는 것입니다. 따라서 요구 분석 및 정의 단계에서 제일 먼저 해야 할 일은 어떠한 이해 관계자들이 있고 이들의 요구 사항이 무엇인지 파악하는 것에서 출발합니다. 중요한 이해 관계자와 이들의 요구 사항은 기획 문서로 만들어져 있다면 요구 분석 비용을 줄일 수 있습니다. 따라서 아키텍트는 개발자 뿐만 아니라 기획자와 의뢰자와 의사 소통이 필수적입니다. 특히 기획자에게 요구 사항 및 정의 단계를 진행하기 위해 의뢰자가 무엇을 원하는 것이 무..

[프로젝트 개발 공정 가이드] 2. 프로젝트 개발 공정 개요

2. 프로젝트 개발 공정 개요 비지니스 프로젝트를 개발할 때 어떠한 공정으로 진행하는 것인지 연구하는 곳은 많습니다. 그리고 이를 특정 개발 방법론으로 소개를 하는데 여기에서는 CBD 개발 방법론을 기본으로 소개할 것입니다. CBD 개발 방법론은 어러 개의 서브 프로젝트를 컴포넌트화하여 이들 사이의 관계를 정의하여 개발하는 방법론입니다. CBD 개발 방법론으로 프로젝트를 진행할 때 중간 결과물들은 CASE 도구(Rose, Together, StarUml,...)를 사용하는 부분이 생깁니다. 일부 개발자들은 CASE 도구에 의해 만드는 중간 결과물을 상사에게 보여주기 위한 것이며 실효성이 떨어져서 전체 비용을 증가시킨다고 생각하기도 합니다. 하지만 이는 개발 공정을 적용하는 과정에서 왜 그러한 것들을 만드..

[프로젝트 개발 공정 가이드] 1. 개요

1. 개요 이 문서는 일반적인 비지니스 프로젝트를 개발할 때 효과적인 관리와 개방을 위한 공정에 관한 가이드입니다. 비지니스 프로젝트를 수행할 때 필요한 인력을 적절한 시기에 배치하고 현재 전체 공정에서 어느 위치에 있는지 파악하는 것과 필요한 의사소통을 적시에 하는 것은 비용을 최적화하는데 도움을 줍니다. 실제 현장에서 프로젝트를 수행할 때 개발 공정 가이드없이 그 때 그 때 필요한 것을 파악하면서 진행하는 것을 많이 접할 수 있습니다. 이러한 형태로 개발을 하면 초기에 무엇인가 구현하는 것이 보이기 때문에 전체 공정이 빠르게 진행하는 것으로 착시 현상이 발생할 수 있습니다. 특히 외부에서 수주받아 수행하는 프로젝트일 때 약속한 기간동안 해야 하는 프로젝트일 때는 이와 같은 주먹구구식 개발은 회사에 위..

물리적 파일에 접근하기 위한 경로, 하드 링크(link)와 심볼릭 링크(symlink)

4.7 물리적 파일에 접근하기 위한 경로, 하드 링크(link)와 심볼릭 링크(symlink) 리눅스(유닉스) 시스템에서는 물리적 파일에 접근하기 위해 경로(디렉토리 및 파일명)명을 사용합니다. 그런데 리눅스에서는 하나의 물리적 파일에 접근하기 위한 경로를 여러 개를 설정할 수 있습니다. 리눅스(유닉스) 시스템에서 하나의 물리적 파일에 접근하기 위한 경로는 하드 링크와 심볼릭 링크로 구분할 수 있습니다. 하드 링크는 물리적 파일과 대응하는 inode 항목에 연결 계수(link count)를 두어 관리하는 방법입니다. 이러한 하드 링크는 같은 파일 시스템 내에 존재하는 파일에 관해서만 생성할 수 있습니다. 특히 디렉토리는 슈퍼유저만 하드링크를 허용하여 잘못 연결하였을 때 무한루프의 피해를 최소화하였습니다...

소유자 ID 및 소유 그룹 ID 변경할 때 chown, fchown

4.6 소유자 ID 및 소유 그룹 ID 변경할 때 chown, fchown 리눅스(유닉스) 시스템 호출 중에 chown과 fchown은 파일의 소유자 ID 및 소유 그릅 ID를 변경할 때 사용합니다. /*********************************************************************** * ex_chown.c * * example source - change file ownership * ***********************************************************************/ #include #include #include #include #include int main(int argc,char **argv) { if(a..

umask 값을 설정하여 파일 접근 권한 모드를 안전하게

4.5 umask 리눅스(유닉스) 시스템은 개인이 사용하는 PC를 운용하기 위한 O/S가 아니라 서버를 운용하기 위한 O/S 입니다. 이에 시스템 관리자는 일반 사용자가 보안 정책에 관심을 갖지 않아도 기본적인 보안 정책을 세울 수 있는 방안을 제공하고 있으며 그 중 가장 기본적인 것이 umask 입니다. 시스템 관리자는 파일의 접근 허가를 불허하는 최소한의 값을 설정할 수 있으며 이를 umask 값이라고 말합니다. 예를 들어 일반 사용자가 실행 파일에 접근 권한을 0777로 설정하면 소유자와 소유그릅, OTHER 모두 읽기, 쓰기, 실행 권한을 갖습니다. 이는 자신도 모르게 다른 사용자에 의해 파일을 삭제할 수 있다는 것을 의미합니다. 이러한 맹점을 없애기 위해 일반적으로 시스템 관리자는 umask값을..

chmod 명령의 또 다른 기능 스티키 비트와 set user id bit

4.4 chmod 명령의 또 다른 기능 스티키 비트와 set user id bit chmod 명령은 파일의 접근 허가 모드를 설정할 때 사용합니다. 그리고 이 외에도 chmod 명령은 스티키 비트와 set user id bit를 설정할 수 있습니다. 스티키 비트를 설정한 프로그램 파일을 한 번 실행하면 사용한 프로그램의 Text 세그먼트(코드를 기계어로 번역한 영역)를 스왑 파티션에 배치하여 빠르게 실행할 수 있게 하였습니다. 하지만 가상 메모리 처리로 지금은 스왑 파티션에 배치하지 않아도 속도 차이가 나지 않습니다. 지금은 스티키 비트를 설정하면 사용 권한은 부여하지만 파일의 삭제를 하지 못하게 할 때 스티키 비트를 설정합니다. 그리고 스티키 비트를 설정할 때는 t 옵션을 추가합니다. 예를 들어 chm..

chmod, fchmod 시스템 호출로 파일의 접근 권한 변경

4.3 chmod, fchmod 이번에는 존재하는 파일에 접근 권한을 변경하는 chmod와 fchmod 함수를 살펴봅시다. /*********************************************************************** * ex_chmod.c * * example source - change file access mode * ***********************************************************************/ #include #include int main(int argc,char **argv) { if(argc != 3) { fprintf(stderr,"usage: %s [file name]\n",argv[0]); retur..

반응형