Skip to content

웹 환경에서 C 코드를 실행할 수 있는 간단한 API 서비스

License

YangSiJun528/c-runner-api-server

Repository files navigation

c-runner-api-server

프로젝트 소개

C-Runner API는 웹 환경에서 C 코드를 실행할 수 있는 간단한 API 서비스입니다.

Flask 서버와 TinyCC(TCC) 컴파일러를 사용해 C 코드를 컴파일하고 실행 결과를 JSON으로 반환합니다.

데모 영상

demo video

asciicast에서 보기

개발 목적

이 프로젝트는 Markdown 기반 문서 사이트에서 C 코드 블록을 직접 실행할 수 있도록 지원하는 백엔드 서비스로 개발되었습니다.

일반적인 C 실행 API로도 자유롭게 활용할 수 있습니다.

주의사항

  • 프로덕션 환경 사용 금지: 이 서버는 사용자 제공 C 코드를 직접 실행하므로 보안 위험이 있습니다.
  • 프로덕션에 배포하려면 다음 사항을 구현해야 합니다:
    • API 접근 제한 및 인증 메커니즘 추가
    • CORS 설정 제한 (현재는 모든 도메인 허용)
    • 코드 실행 샌드박스 강화
    • 등등

프로젝트 구조

.
├── Dockerfile      # 도커 이미지 빌드 설정 - TCC 구성 포함
├── LICENSE         # 라이선스 정보
├── README.md       # 프로젝트 설명서
├── app.py          # Flask API 서버 코드
└── requirements.txt # Python 의존성 패키지

빌드 및 실행 방법

도커 이미지 빌드

docker build -t c-runner-api-server .

도커 컨테이너 실행

docker run -d -p 5555:5000 --name c-runner c-runner-api-server
  • 포트 매핑: 호스트 5555 → 컨테이너 5000
  • 필요시 포트 번호 변경 가능

API 기본 사용법

엔드포인트

  • URL: /execute_c
  • 메서드: POST
  • Content-Type: application/json

요청 형식 요약

{
  "code": "C 코드 문자열",
  "args": "명령행 인수 (선택사항)"
}

응답 형식 요약

{
  "output": "표준 출력 결과",
  "error": "표준 에러 출력 또는 에러 메시지", 
  "exit_code": "종료 코드 (정수)"
}

실행 환경 격리 요약

각 C 코드 실행은 격리된 환경에서 수행됩니다:

  • /tmp 디렉토리에서만 파일 읽기/쓰기 가능
  • 각 실행마다 고유 UUID 기반 작업 디렉터리 생성
  • 실행 완료 후 작업 디렉터리 및 모든 임시 파일 자동 삭제
  • 10초 타임아웃으로 무한 루프 방지

상세 API 문서

API 사용에 관한 자세한 정보, 테스트 케이스, 파일 입출력 예시 등은 API 문서를 참조하세요.

라이선스

"MIT-0" License

About

웹 환경에서 C 코드를 실행할 수 있는 간단한 API 서비스

Resources

License

Stars

Watchers

Forks

Packages