기술 · 실용 가이드
Python 단일 대용량 입력에서 E2BIG? 분할 전에 입력 경로 검증
Linux는 인수 전체뿐 아니라 단일 인수도 제한합니다. 수신 프로그램이 지원하는 경로로만 옮기고 동일 바이트가 도착했는지 확인하세요.

한 입력이 표시된 ARG_MAX보다 작아도 errno가 E2BIG인 OSError가 날 수 있습니다. 명령 분할이나 한도 조정 전에 어느 실행이 실패했는지, 독립 항목 여럿인지 분할할 수 없는 입력 하나인지 확인하세요.
표시 경로보다 실행 실패를 입증
정확한 실행 파일, Python 버전, 플랫폼과 인수 경계를 보존합니다. 내용은 출력하지 않고 숫자 errno, 인수 바이트 길이와 전체 환경 크기를 기록하세요. 같은 실행 조건의 같은 프로그램으로 작은 합성 입력과 비교합니다.
Python은 실행 시작 중 OSError와, 시작된 자식이 반환하는 0이 아닌 종료 상태를 구분합니다. E2BIG에는 전체 크기 등 문서화된 다른 원인도 있어 메시지의 실행 경로만으로 진단할 수 없습니다. 한 실행이 실패했다고 전체 다단계 작업을 다시 돌리지 마세요.
입력 하나와 작업 목록을 분리
Linux 매뉴얼은 인수·환경 전체 한도 외에 단일 문자열 32페이지 제한과 끝의 NUL 포함을 설명합니다. 페이지 크기와 플랫폼이 중요합니다. 인수 목록으로 바꾸면 셸 파싱은 피하지만 한 요소가 너무 크면 여전히 실패합니다.
같은 큰 값을 환경 변수로 옮기는 것도 만능 출구가 아닙니다. 전체 한도를 높여도 단일 문자열 제한은 사라지지 않습니다. 분할은 독립 작업이며 전체 의미가 같을 때만 적합합니다. JSON 문서 하나나 애플리케이션 트랜잭션을 나누면 작업이 달라질 수 있습니다.
지원 경로로 전달하고 동일 데이터 확인
수신 프로그램의 stdin 지원이 문서화됐다면 유한한 Python 호출은 subprocess.run([executable, ...], input=payload_bytes, capture_output=True, check=True)를 쓸 수 있습니다. 생성한 -c 인수에 큰 데이터를 다시 넣지 마세요. 파일이나 응답 파일도 해당 도구가 형식과 수명 조건을 지원할 때만 사용합니다.
Linux 6.18.44와 Python 3.12.14에서 같은 자체 수신 프로그램을 시험했습니다. 합성 원본 196608바이트는 Base64 262144바이트가 됐습니다. 단일 인수에서는 ARG_MAX가 2097152여도 errno 7이 났고, stdin으로는 종료 0과 원본 196608바이트가 완전히 복원돼 SHA-256도 일치했습니다. SDK나 다른 OS 시험은 아닙니다.
전송 성공과 애플리케이션 성공 구분
시연 수신기는 두 경로를 명시적으로 구현하고 base64.b64decode(..., validate=True)로 복원했습니다. 임의 CLI가 파이프 JSON, 원시 바이트나 응답 파일을 받는다는 증거가 아닙니다. 변경 전 인코딩, 구분자, 메시지 경계와 실제 입력 계약을 확인하세요.
오류를 보존하고 적절하면 예상 바이트 수나 해시를 맞춘 뒤 애플리케이션 결과를 별도로 검증합니다. 유한한 예제는 출력을 버퍼링하므로 큰 스트림에는 적절한 파일 핸들이나 스트리밍 설계가 필요합니다. 시작 뒤 실패는 따로 조사하고 앞선 성공 기록을 남겨 재시도 중복 실행을 피하세요.
