suminworld

execve 3

[시스템 프로그래밍] execve() 시스템 콜 C vs 어셈블리 비교 분석

execve() 시스템 콜을 C 언어와 어셈블리 두 가지 방식으로 구현해보고, 각각의 차이점과 동작 원리를 자세히 분석한 내용 정리.같은 기능을 하는 코드가 어떻게 다르게 구현되는지, 그리고 시스템 콜이 실제로 어떻게 작동하는지 확인.💡 참고이 코드는 학습용 예제입니다.실제로 실행하면 셸이 바로 뜨므로, 반드시 승인된 실습 환경(로컬 VM, CTF 문제 등)에서만 실행하세요.C 언어 구현#include int main() { char *const argv[] = { "/bin/sh", NULL }; // 인자 리스트 char *const envp[] = { NULL }; // 환경변수 없음 execve("/bin/sh", argv, envp); _exit(1..

system 2025.09.08

[시스템 프로그래밍] execve() 시스템 콜로 이해하는 프로세스 교체 원리

오늘은 fork()와 함께 사용되는 또 다른 핵심 시스템 콜인 execve()- execve()는 현재 프로세스를 완전히 다른 프로그램으로 바꿔버리는 강력한 기능으로, 유닉스/리눅스 시스템에서 새로운 프로그램을 실행하는 핵심 메커니즘execve() 시스템 콜이란?execve()는 현재 실행 중인 프로세스를 완전히 다른 프로그램으로 교체하는 시스템 콜출처: linux-in-practice GitHub 위의 소스코드를 분석한 내용을 정리하였습니다!예제 코드 분석#include #include #include #include static void child(){ char *args[] = { "/bin/echo", "hello" , NULL}; printf("I'm child! my pid is %..

system 2025.09.08

[시스템 프로그래밍] fork()와 execve()로 이해하는 bash의 명령어 실행 원리

bash 쉘이 어떻게 명령어를 실행하면서도 자기 자신은 유지하는지에 대해 학습한 내용 정리터미널에서 ls, cat, gcc 같은 명령어를 입력할 때 bash 작동 방식 - execve()와 fork() 시스템 콜을 통해 이해하기1. execve() 시스템 콜의 이해기본 문법int execve(const char *pathname, char *const argv[], char *const envp[]);매개변수 설명:pathname: 실행할 프로그램의 경로argv[]: 명령행 인자 배열 (NULL로 끝남)envp[]: 환경변수 배열 (NULL로 끝남)반환값:성공하면 반환하지 않음 (원래 프로그램이 완전히 교체되므로)실패하면 -1execve() 예제 코드#include #include int main() {..

system 2025.09.08