본문 바로가기

전체 글

(68)
이미지 버퍼 초기화 함수 1. 기존 이미지 제거:    ```c    if (fdf->img.img)        mlx_destroy_image(fdf->mlx_ptr, fdf->img.img);    ```    - 이미 존재하는 이미지가 있다면 먼저 제거합니다.    - 이는 메모리 누수를 방지하고 새 이미지를 위한 공간을 확보합니다. 2. 새 이미지 생성:    ```c    fdf->img.img = mlx_new_image(fdf->mlx_ptr, WIDTH, HEIGHT);    ```    - `mlx_new_image` 함수를 사용하여 새 이미지를 생성합니다.    - `WIDTH`와 `HEIGHT`는 이미지의 크기를 지정합니다. 3. 이미지 데이터 주소 얻기:    ```c    fdf->img.addr = m..
MiniLibx 기본 구현 알고리즘 입력 검사: c if (input_check(argc, argv[1]))     return (1); 명령줄 인자의 수와 첫 번째 인자(파일 이름)를 검사합니다. 문제가 있으면 프로그램을 종료합니다. 파일 읽기: c read_file(&fdf, argv[1]); 입력 파일을 읽어 fdf 구조체에 데이터를 저장합니다. 이 과정에서 3D 맵 데이터가 로드될 것입니다. MiniLibX 초기화: c minilibx_init(&fdf, argv[1]); MiniLibX 그래픽 라이브러리를 초기화합니다. 윈도우를 생성하고 그래픽 컨텍스트를 설정합니다. FDF 초기화: c fdf_init(&fdf); FDF 프로그램에 필요한 추가 설정을 초기화합니다. 카메라 설정, 변환 매트릭스 등이 여기서 설정될 수 있습니다. 이..
c언어에서 exit(0)과 exit(1)의 간단한 차이점 종료 상태 exit(0): 프로그램이 성공적으로 종료되었음을 나타냅니다123. 이는 EXIT_SUCCESS 매크로와 동일합니다. exit(1): 프로그램이 오류나 비정상적인 상태로 종료되었음을 나타냅니다123. 이는 EXIT_FAILURE 매크로와 동일합니다.  사용 목적 exit(0): 프로그램이 의도한 대로 정상적으로 실행을 완료했을 때 사용합니다13. exit(1): 프로그램 실행 중 오류가 발생하거나 예상치 못한 상황으로 인해 비정상적으로 종료해야 할 때 사용합니다13.  이식성 exit(0): 완전히 이식 가능하며, 모든 시스템에서 동일하게 해석됩니다2. exit(1): 대부분의 시스템에서 오류를 나타내지만, 표준에 의해 엄격히 정의되지 않아 이식성이 떨어질 수 있습니다2.  프로그램 동작 두 ..
파이프 입력부 및 출력부의 자식 프로세스 주어진 코드에서 dup2(pipex.tube[1], 1)로 출력을 먼저 설정하고, 그 다음에 dup2(pipex.infile, 0)으로 입력을 설정하는 것은 특정한 목적을 가지고 있습니다.dup2 함수의 역할dup2(int oldfd, int newfd) 함수는 oldfd 파일 디스크립터를 newfd로 복제합니다. 이 과정에서 newfd가 이미 열려 있다면, 해당 파일 디스크립터는 닫히고 oldfd가 newfd로 복제됩니다. 이 함수는 주로 프로세스의 표준 입력, 출력, 오류 스트림을 리다이렉트하는 데 사용됩니다.출력과 입력 설정의 순서출력 리다이렉션:이 줄은 pipex.tube[1] (파이프의 쓰기 끝)을 표준 출력(파일 디스크립터 1)으로 설정합니다. 이렇게 하면 자식 프로세스의 출력이 파이프를 통해..
waitpid 함수 파라미터 설명 waitpid 함수의 두 번째 인자는 자식 프로세스의 종료 상태를 저장하기 위한 포인터이며, NULL은 종료시 상태정보를 저장하지 않는다는 뜻입니다. 이 인자는 자식 프로세스가 종료될 때 그 상태 정보를 담고 있는 변수의 주소를 전달합니다. 이 변수는 자식 프로세스의 종료 상태를 확인하는 데 사용되며, 여러 매크로를 통해 상태를 해석할 수 있습니다. 두 번째 인자: 상태 변수 (statloc)정의: 두 번째 인자는 int *statloc 형식으로, 자식 프로세스의 종료 상태를 저장할 변수의 주소를 전달합니다. 이 변수는 자식 프로세스가 종료된 후, 그 상태를 확인하는 데 사용됩니다.상태 확인 매크로:WIFEXITED(statloc): 이 매크로는 자식 프로세스가 정상적으로 종료되었는지를 확인합니다. 만약..
execve함수 설명 execve 함수에서 envp 매개변수는 새로운 프로세스를 실행할 때 해당 프로세스의 환경 변수를 설정하는 역할을 합니다. 이 매개변수는 문자열 배열로, 각 문자열은 "이름=값" 형식의 환경 변수 쌍을 포함합니다.execve 함수의 매개변수 설명pathname: 실행할 프로그램의 경로입니다.argv: 실행할 프로그램에 전달할 인자(arguments) 배열입니다. argv[0]는 프로그램의 이름을 나타내고, argv[1]부터는 추가 인자들이 포함됩니다.envp: 새로운 프로세스에서 사용할 환경 변수 배열입니다. 각 환경 변수는 "이름=값" 형식의 문자열로 표현됩니다.envp의 역할환경 변수 설정: envp를 통해 새로운 프로세스가 사용할 환경 변수를 설정할 수 있습니다. 이는 프로그램이 실행될 때 필요한 ..
부모 자식 프로세스 fork pid pipe 코드 코드 흐름 분석fork() 호출:pipex.pid1 = fork();와 pipex.pid2 = fork();는 각각 자식 프로세스를 생성합니다. 이때, 부모 프로세스는 자식 프로세스의 PID를 받고, 자식 프로세스는 0을 반환받습니다.자식 프로세스 실행:각 자식 프로세스는 child1(pipex, argv, envp); 또는 child2(pipex, argv, envp);를 호출하여 자신의 작업을 수행합니다.파이프 닫기:close_pipes(&pipex);는 부모 프로세스에서 호출됩니다. 이 함수는 파이프의 두 끝을 닫아, 자식 프로세스가 더 이상 파이프를 사용하지 않도록 합니다.자식 프로세스 종료 대기:waitpid(pipex.pid1, NULL, 0);와 waitpid(pipex.pid2, NULL,..
MiniLibX 에서 hook, KeyPressMask KeyReleaseMask의 의미 MiniLibX(mlx)에서 hook의 의미는 특정 이벤트가 발생했을 때 실행될 함수를 등록하는 메커니즘을 말합니다. 이는 프로그램의 이벤트 처리 시스템의 핵심 부분입니다.hook의 주요 특징과 용도는 다음과 같습니다: 이벤트 감지: 키보드 입력, 마우스 클릭, 창 노출 등의 이벤트를 감지합니ㄷㅏ. 콜백 함수 등록: 특정 이벤트가 발생했을 때 실행될 사용자 정의 함수를 등록합니다 이벤트-함수 연결: 등록된 함수는 해당 이벤트가 발생할 때마다 자동으로 호출됩니다 프로그램 흐름 제어: 이벤트 기반 프로그래밍을 가능하게 하여, 사용자 상호작용에 반응하는 프로그램을 만들 수 있습니다 다양한 hook 종류: 키보드(mlx_key_hook), 마우스(mlx_mouse_hook), 화면 노출(mlx_expose_ho..