본문 바로가기

전체 글

system() 함수 (c언어로 쉘 호출하기) [형태] #include int system(const char *str) [기능]system() 함수는 실행 쉘인 /bin/sh -c str 을 호출하여 str에 지정된 명령어를 실행하고명령어가 끝난 뒤 리턴한다. 명령어가 실행되는 동안은 SIGCHLD(자식 프로세스가 종료되었을 때 나오는 signal)는 block되며SIGINT(키보드 interrupt로 실행중지시키는 signal, ctrl+c), SIGQUIT(키보드 interrupt로 프로세스 종료 + 코어덤프, ctrl+₩) 는 무시된다.(fork() + execve() 조합이라고 생각하면 된다) [반환값]return 127 : /bin/sh를 실행시키위한 execve() 실패 시,return -1 : 에러 발생return 그 외 값 : 명령어.. 더보기
리눅스 에러코드 (linux error code) include/uapi/asm-generic/errno-base.h (1~34번까지)include/uapi/asm-generic/errno.h (35~133번까지) 에 정의되어 있다. (linux-5.7.11 기준) ValueMACROMeaning0 Success1EPERMOperation not permitted 2ENOENTNo such file or directory 3ESRCHNo such process 4EINTRInterrupted system call 5EIOI/O error 6ENXIONo such device or address 7E2BIGArgument list too long 8ENOEXECExec format error 9EBADFBad file number 10ECHILDNo ch.. 더보기
정수 승격(integer promotion), 묵시적 형변환 정수 승격이 무엇인지 살펴보기 전에 아래 코드에 대한 결과부터 고민해보자 123456789101112#include int main(){ char a, b; printf("sizeof(a) : %d, sizeof(b) : %d\n", sizeof(a), sizeof(b)); printf("sizeof(a + b) : %d\n", sizeof(a + b)); return 0;} Colored by Color Scriptercs 위 코드를 실행하면, sizeof(a + b)는 몇이 출력이 될까?char + char type이므로 당연히 char 타입의 size인 1(byte)이 출력 될 것이라 생각했다면정수 승격에 대해 아직 모르고 있다는 것! 위 코드를 실행한 결과는 아래와 같다. 왜 sizeof(a + .. 더보기