본문 바로가기

Programming/C/C++19

system함수, exec계열의 함수(execl, execv, execle, execve, execlp, execvp) 먼저 system함수를 알아 보겠습니다. 원형은 int system(const char* command)이며 command에 해당하는 명령어를 수행하는 함수입니다. (반환형이 int인데 성공시 0을 반환, 실패시 -1을 리턴합니다.) system함수로 ls명령어를 실행해본 화면입니다. -> /bin/ls처럼 절대 경로말고 ls로만 입력해도 ls가 실행됩니다. (환경변수 PATH를 이용하는 듯..) 그리고 옵션을 사용할 때는 단순히 "/bin/ls -a"와 같이 해주면 됩니다. -> 이제 exec계열의 함수(execl, execv, execle, execve, execlp, execvp)에 대해서 알아 보겠습니다. 아래 그림에서 exec계열의 함수에 대해 자세히 설명해줍니다. 위의 exec함수들을 보면 e.. 2012. 5. 16.
프로그램 종료2 - atexit(), _exit() atexit() 원형 : int atexit(atexit_t func) 헤더 파일 : stdlib.h 리턴 값 : 성공시 0 반환, 실패시 0 이외의 값 리턴 -> 프로그램이 종료되거나 exit()함수에 의해 종료될때 atexit()에 등록한 함수를 실행한다. exit(0)없이 프로그램이 종료되도 test()함수는 실행된다. 그리고 atexit()에 나중에 등록한 함수가 먼저 실행된다. ex) _exit() 원형 : void _exit(int status) 헤더 파일 : stdlib.h -> exit()와 다르게 열려 있는 파일을 닫는다거나 탈출 함수를 호출하지 않고 종료한다. _exit()를 했을때는 test()함수가 실행되지 않는다. 2012. 5. 3.
프로그램 종료 - assert(), exit(), abort() assert() 원형 : void assert(int test) 헤더 파일 : assert.h -> assert안의 값이 false일 경우 프로그램을 비정상적으로 종료 exit() 원형 : void exit(int status) 헤더 파일 : stdlib.h -> EXIT_SUCCESS : 정상적인 종료 (0) EXIT_FAILURE : 비정상적인 종료 (1) abort() 원형 : void abort(void) 헤더 파일 : stdlib.h -> 프로그램을 비정상적으로 종료한다. 2012. 5. 2.
PF_INET와 AF_INET 소켓 프로그래밍을 할 때 socket()함수에서는 PF_INET으로 ipv4 프로토콜을 표현하고 struct sockaddr_in 의 sin_family에는 AF_INET으로 ipv4를 표현했었습니다. 그런데 PF_INET와 AF_INET의 차이는 무엇일까요? socket(PF_INET, ~~, ~~); struct sockaddr_in의 sin_family멤버에 = AF_INET 리눅스에서 아래와 같은 프로그램을 만들어서 실행해보면 #include #include int main() { printf("PF_INET : %d \n", PF_INET); printf("AF_INET : %d \n", AF_INET); } PF_INET와 AF_INET 둘다 2라는 상수를 가지는 것을 확인 할 수 있습니다. .. 2012. 4. 30.