개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.09 16:40

PCNTL 모듈의 errno 함수 이해 도움 부탁드립니다.

목록
  • 데이터베이스귀신 12일 전 2025.07.09 16:40 인기
  • 126
    1
제가 현재 PHP의 PCNTL 모듈을 사용하여 프로세스를 제어하고 있는데,
errno 함수를 사용하여 오류를 확인하고 싶습니다.
pcntl_errno() 함수의 사용 방법과 오류 코드를 어떻게 해석하는지 알려주실 수 있을까요?

예를 들어, fork() 함수를 호출한 후, pcntl_errno() 함수를 사용하여 오류를 확인하는 방법은 어떻게 되나요?

이러한 오류 코드를 해석하는 방법과 예시 코드를 알려주실 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  12일 전



    PHP의 PCNTL 모듈의 errno 함수는 오류 코드를 반환하는 함수입니다. pcntl_errno() 함수를 사용하여 오류 코드를 확인할 수 있습니다.

    pcntl_errno() 함수는 현재 오류 코드를 반환합니다. 예를 들어, fork() 함수를 호출한 후, pcntl_errno() 함수를 사용하여 오류 코드를 확인하려면 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $pid = pcntl_fork();
    
    
    
    if ($pid == -1) {
    
        echo "fork() 함수 호출 시 오류가 발생했습니다. (errno: " . pcntl_errno() . ")n";
    
    } elseif ($pid == 0) {
    
        // 자식 프로세스 코드
    
    } else {
    
        // 부모 프로세스 코드
    
    }
    
    


    errno 함수의 오류 코드는 POSIX 오류 코드를 반환합니다. POSIX 오류 코드는 다음과 같습니다.

    - E2BIG: 인자 목록이 너무 길다.
    - EACCES: 권한이 없습니다.
    - EADDRINUSE: 주소가 이미 사용 중이다.
    - EADDRNOTAVAIL: 주소가 사용할 수 없다.
    - EAFNOSUPPORT: 주소 형식이 지원되지 않는다.
    - EAGAIN: 리소스가 현재 사용 중이다.
    - EALREADY: 이미 연결되어 있다.
    - EBADF: 잘못된 파일 디스크립터.
    - EBADMSG: 잘못된 메시지.
    - ECANCELED: 작업이 취소되었다.
    - ECHILD: 자식 프로세스가 존재하지 않는다.
    - ECONNABORTED: 연결이 중단되었다.
    - ECONNREFUSED: 연결이 거부되었다.
    - ECONNRESET: 연결이 종료되었다.
    - EDEADLK: 데드락이 발생했다.
    - EDESTADDRREQ: 목적지 주소가 필요하다.
    - EDOM: 잘못된 인자.
    - EEXIST: 파일이나 디렉토리가 이미 존재한다.
    - EFAULT: 잘못된 주소.
    - EFBIG: 파일 크기가 너무 크다.
    - EHOSTDOWN: 호스트가 다운되었다.
    - EHOSTUNREACH: 호스트에 도달할 수 없다.
    - EIDRM: ID가 삭제되었다.
    - EILSEQ: 잘못된 문자열.
    - EINPROGRESS: 작업이 진행 중이다.
    - EINTR: 인터럽트가 발생했다.
    - EINVAL: 잘못된 인자.
    - EIO: 입출력 오류.
    - EISCONN: 이미 연결되어 있다.
    - EISDIR: 디렉토리이므로 열 수 없다.
    - ELOOP: 심볼릭 링크가 너무 깊다.
    - EMFILE: 열린 파일의 최대 개수에 도달했다.
    - EMLINK: 링크의 최대 개수에 도달했다.
    - EMSGSIZE: 메시지 크기가 너무 크다.
    - ENAMETOOLONG: 파일 이름이 너무 길다.
    - ENETDOWN: 네트워크가 다운되었다.
    - ENETUNREACH: 네트워크에 도달할 수 없다.
    - ENFILE: 열린 파일의 최대 개수에 도달했다.
    - ENOBUFS: 버퍼가 부족하다.
    - ENODATA: 데이터가 없다.
    - ENODEV: 장치가 존재하지 않는다.
    - ENOENT: 파일이나 디렉토리가 존재하지 않는다.
    - ENOEXEC: 명령어를 실행할 수 없다.
    - ENOLCK: 잠금이 존재하지 않는다.
    - ENOLINK: 링크가 존재하지 않는다.
    - ENOMEM: 메모리가 부족하다.
    - ENOMSG: 메시지가 존재하지 않는다.
    - ENOPROTOOPT: 프로토콜 옵션이 지원되지 않는다.
    - ENOSPC: 장치가 사용할 수 없을 때.
    - ENOSR: 소켓이 사용할 수 없을 때.
    - ENOSTR: 스트림이 존재하지 않는다.
    - ENOSYS: 시스템 콜이 지원되지 않는다.
    - ENOTBLK: 블록 장치가 존재하지 않는다.
    - ENOTDIR: 디렉토리가 존재하지 않는다.
    - ENOTEMPTY: 디렉토리가 비어있지 않다.
    - ENOTSOCK: 소켓이 존재하지 않는다.
    - ENOTSUP: 지원되지 않는 옵션.
    - ENOTTY: 장치가 존재하지 않는다.
    - ENXIO: 장치가 사용할 수 없을 때.
    - EOPNOTSET: 오퍼레이션을 완료할 수 없다.
    - EOVERFLOW: 데이터가 너무 많다.
    - EOWNERDEAD: 소유자가 죽었다.
    - EPERM: 권한이 없습니다.
    - EPFNOSUPPORT: 프로토콜이 지원되지 않는다.
    - EPIPE: 파이프가 연결이 끊겼다.
    - EPROTO: 프로토콜 오류.
    - EPROTONOSUPPORT: 프로토콜이 지원되지 않는다.
    - EPROTOTYPE: 프로토콜이 지원되지 않는다.
    - ERANGE: 범위가 너무 크다.
    - EREAD: 읽기 오류.
    - EROFS: 읽기/쓰기 오류.
    - ESPIPE: 파이프가 존재하지 않는다.
    - ESRCH: 프로세스가 존재하지 않는다.
    - ESOCKTNOSUPPORT: 소켓이 지원되지 않는다.
    - ESPIPE: 파이프가 존재하지 않는다.
    - ESTALE: 파일이 존재하지 않는다.
    - ETIME: 시간이 초과했다.
    - ETIMEDOUT: 시간이 초과했다.
    - ETXTBSY: 텍스트 파일이 사용 중이다.
    - EUCLEAN: 파일이 깨끗하지 않다.
    - EUNATCH: 파일이 존재하지 않는다.
    - EUSERS: 사용자 수가 초과했다.
    - EWOULDBLOCK: 리소스가 현재 사용 중이다.
    - EXDEV: 파일이 다른 장치에 있다.

    위 오류 코드를 해석하려면, 오류 코드를 확인하고 해당 오류 코드의 설명을 참조하면 됩니다.

    2025-07-09 16:41

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,883건 / 24 페이지

검색

게시물 검색