본문 바로가기

컴퓨터

feof(),,, 마지막 줄 두 번 안 읽게 하는 처리 feof(),,, 마지막 줄 두 번 안 읽게 하는 처리 data 파일의 내용 Hanyang University The College of Information and Communication Major in Computer (줄바꿈) 라고 가정하고, fread() 함수로 data 파일의 내용을 읽어 오면 Hanyang University The College of Information and Communication Major in Computer Major in Computer 이렇게 맨 마지막줄이 한 번 더 출력되는 상황이 발생한다. 이럴 때는 어떻게 대처해야 할까? 아래와 같이 fread() 함수로 한 번 더 읽어서 fread() == 0 임을 판단 하여 TRUE 값을 반환 한다면 break로 루프.. 더보기
23 프로세스 23 프로세스 프로세스들은 시스템의 자원들의 할당을 위한 기본적인 단위이다. 각 프로세스는 자신만의 주소공간과 (보통) 한 개의 제어 쓰레드를 갖는다. 프로세스는 프로그램을 실행한다; 당신은 같은 프로그램을 실행하는데 여러개의 프로세스를 가질 수 있지만, 각각의 프로세스는 자신의 주소공간에서 자신의 프로그램 복제본을 갖고 다른 프로그램 복사본과 독립적으로 실행된다. 프로세스들은 계층적으로 구성된다. 각 프로세스는 그것을 만들었던 부모 프로세스를 갖는다. 주어진 부모 프로세스에 의해 만들어진 프로세스는 자식 프로세스라고 불린다. 자식 프로세스는 부모 프로세스로부터 그 속성의 대부분을 상속받는다. 이 장은 프로그램에서 어떤 자식 프로세스를 만들고, 종료하고, 제어하는지에 대해서 설명하고 있다. 실제로, 새로.. 더보기
fork를 이용해서 자식 1~10출력후 부모 1~10을 출력하는 프로그램 fork() 시스템 콜과 exec() 시스템 콜에 대해 간단히 이야기하고 넘어가겠습니다. UNIX 시스템 프로그래밍을 공부해 보신 분들을 다 잘 아시는 내용일 것입니다. fork() 나 exec() 모두 한 프로세스가 다른 프로세스를 실행시키기 위해 사용하는 시스템 호출입니다. 두 함수의 차이점을 위주로 설명하면, 우선 fork() 시스템 호출은 새로운 프로세스를 위한 메모리를 할당합니다. 그리고, fork() 를 호출한 프로세스를 새로운 공간으로 싸그리 복사합니다. 그리고 나서 원래 프로세스는 원래 프로세스대로 실행되고, fork() 를 이용해서 생성된 프로세스도 그 나름대로 fork() 시스템 콜이 수행된 라인의 다음 라인부터 실행이 됩니다. (새로 생성된 프로세스는 원래의 프로세스랑 똑같은 코드를가.. 더보기
fork는 새로운 child Process를 실행 하는데 사용 합니다. fork는 새로운 프로세스를 생성 하기 위한 function입니다. 새로운 프로세스(Child Process)는 fork를 실행 한 Process의 모든것을 그대로 복사 하여 가지고 있습니다. 포크는 멀티프로세싱을 하기 위한 기본입니다. 즉 프로그램에서 동시에 여러가지 일을 수행 하기 위한 기본적인 명령어 인것 입니다. 쉬운 예로 Web Server를 살펴 봅시다. Web Server는 동시에 적게는 몇명 많게는 몇천명의 사용자를 동시에 처리 해야 합니다. 이를 위해서 Web Server는 다음과 같이 구성 됩니다. 1. 사용자 Request를 기다림 2. 사용자 Request가 들어오면 3. fork를 수행 4. 만일 fork를 수행 한 Process면 1번으로 감. (다른 request를 처리 하기 .. 더보기
fork() 함수에관한건데 좀 도와주세요 #include #include #include fibo (int n); int main() { int a; pid_t pid; pid=fork(); if (pid 더보기
리눅스 gcc 컴파일러 사용 방법 (옵션 정리) gcc는 예전에는 GNU C Compiler의 약자였으나 지금은 GNU Compiler Collection의 약자로 다양한(?) 언어의 컴파일러들의 집합체이다. gcc는 한마디로 GNU에서 개발된 ANSI C 표준을 따르는 C 언어 컴파일러라고 말할 수 있다. gcc는 ANSI C 표준에 따르기는 하지만 ANSI C 표준에는 없는 여러 가지 확장 기능이 있다. 또한 gcc는 통합개발환경(IDE)을 가지고 있지 않은 command line 컴파일러이다. 옛날 Turbo-C를 주로 사용해 보셨던 분들은 tcc.exe와 비슷하다고 생각하면 된다. (*) -v 옵션 현재 사용되고 있는 gcc의 버전을 나타내는 옵션이다. 특정 소프트웨어 패키지를 컴파일하기 위해 어느 버전 이상의 gcc를 쓰도록 권장하는 경우가 .. 더보기
c에서 fork()->exec() 후에 해당 프로세스의 상태 체크 방법은? C에서 fork()로 자식프로세스를 생성 후에 exec()를 이용하여 독립된 프로세스를 만들었을 경우에... 독립된 프로세스의 정상 종료, 비정상 종료를 검사할 방법이 있을까요? C 보다는 유닉스 내용인 것 같습니다. fork(), exec() 이후 자식프로세스가 끝날 때 exit() 호출합니다. exit() 할 때 특정 값을 주도록 돼 있고 이 값은 부모 프로세스에서 wait()로 받아올 수 있습니다. 일반적으로 유닉스 프로세스는 종료값이 0일 경우 정상종료로 보기 때문에 wait()에서 받아온 자식프로세스의 종료 값을 보면 알 수 있겠죠. 사용 방법은 int status, exitvalue; wait(&status); exitvalue = WEXITSTATUS(status); 이렇게 하셔야 합니다. 더보기
자바(JAVA) 설치하는 방법 (환경변수 설정 위주) 1. 프로그램 다운로드 받아서 설치 자바 프로그램을 개발하려면, 우선 자바 프로그램을 개발할수있는 프로그램을 다운로드 받아야 합니다. 흔히 JDK(Java Software Development Kit)라고 불리는 프로그램입니다. [다운로드 주소] http://java.sun.com/j2se/1.4.2/download.html 위사이트로 간후, Download J2SE v1.4.2_03이라는 항목에서, SDK 행의 첫번째열의 링크를 클릭하시면 다운로드를 받으실수 있습니다. (참고로, J2SE는 Java2 Standard Edition을 나타내고, v1.4xxx는 해당 Java의 버젼을 나타냅니다) 2. 환경변수 설정 [윈98] autoexec.bat 파일을 열어서(시작->실행->sysedit 하면, aut.. 더보기