전체 글 썸네일형 리스트형 구조체 비트 필드 structure bit field "구조체(structure)의 비트 필드(bit field)" 는 구조체의 정수 타입의 멤버 변수를 비트 단위로 쪼개서 사용할 수 있게끔 해주는 방법이다. 사용법 :struct 구조체 이름 { 정수형type 변수명 : 비트수 }정수형type : (unsigned, signed)char, short, int, long 123456789101112131415161718#include struct normal { unsigned char ch1; unsigned char ch2;};struct bit_field { unsigned char ch1 : 3; unsigned char ch2 : 2;}; int main(){ printf("normal size : %d, bit_field size : %d \n",.. 더보기 copy_to_user(), copy_from_user(), kernel space and user space 결론 : User space와 Kernel space는 주소 체계가 다르다! 왜? 유저가 어플리케이션을 실행시키면 커널은 실행시킨 어플리케이션을 위해 메모리를 할당해 준다. 그림에서 유저 스페이스에 속하는 어플리케이션이 2개 있다.커널 메모리상에서는 각각 [0x3000:0x6000], [0x8000:0x9000] 에 속하지만각 어플리케이션은 자신이 0x0000부터 시작한다고 생각한다.두 번째 어플리케이션에서 변수 x의 경우, 유저 스페이스에서 0x100에 위치하지만 실제 커널 스페이스에서는 0x8100이다,이처럼 커널 스페이스와 유저스페이스 사이엔 관점의 차이가 있기 때문에 시스템 콜을 통해 포인터를 사용해 두 영역(커널 스페이스유저 스페이스)을 넘나들 때에는커널 스페이스에 있는 코드는 유저 스페이스의 .. 더보기 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 그 외 값 : 명령어.. 더보기 이전 1 2 3 4 5 6 7 8 ··· 11 다음