Linux 4

#4 Linux ( 시그널-alarm() )

시그널 : 예기치 않은 상황이 발생할 때 이를 알리는 소프트웨어 인터럽트 /usr/include/asm/siganl.h. 에서 확인가능 * alarm() unsigned int alarm(unsigned int sec) - sec 은 초 단위를 의미 - 한 프로세스 당 오직 하나의 알람 설정 가능 - alarm(0) : 이전에 설정된 알람은 취소된다 #include #include #include int main() { int count =0; // 카운트 변수 초기화 alarm(5); // 알람 시그널 - 5초후 작동 printf("알람 시크널 테스트입니다\n"); while(1) { // 무한루프 sleep(1); // 1초 sleep printf("%d 초 경과\n",count); count++; ..

Linux 2022.11.23

#3 Linux ( 프로그램 실행 )

fork() 후 자식프로세스는 부모 프로세스와 똑같은 코드를 실행함 자식프로세스에게 새 프로그램을 실행하게 하려면 ? -> exec() 시스템호출 사용 * int execl( char *path,char* argv0, char* argv1,......,char* argvn,NULL) * int execv( char *path,char * argv[]) // p 가 붙은 것들은 경로로 실행파일을 지정함 , 따라서 실행파일의 이름만 지정해서 인자에 넣어준다 * int execlp( char *file,char* argv0, char* argv1,......,char* argvn,NULL) * int execvp( char *gile,char* argv[]) char *path : 프로그램의 상대/절대 경로를..

Linux 2022.11.22

#2 Linux ( 프로세스 )

* 프로세스 생성 fork() - 자식 프로세스에게는 0을 리턴 - 부모 프로세스에게는 자식 프로세스의 id 리턴 - 서로 offset 을 공유함 다음은 부모 프로세스와 자식프로세스의 그룹아이디 ( getpid() 값 살펴보기 ) 예제와 결과화면 #include #include #include int main() { int pid; pid = fork(); // 자식 프로세스 생성 , 자식프로세스는 0,부모는 자식 프로세스id 를 리턴 if(pid==0) { // 자식 프로세스 , 리턴값이 0 이므로 printf("[Child] : hello pid = %d \n " ,getpid()); } else { // 부모 프로세스 printf("[Parent] : Hello pid = %d \n ",getpid..

Linux 2022.11.22

#1 Linux

Linux 첫 게시글로 파일을 잠그는 일을 해보겠슴니다.. 먼저 잠금( Lock ) : 2개 이상의 process 가 동시에 하나의 resource 에 접근하려고 할 때 생기는 문제점을 해결하기 위한 기법 위와 같이 2개의 프로세스가 한 파일에 동시에 접근하려 할때.. ( 2개 이상이 될 수 도 있겠죠 ) 문제점이 발생합니다. 그래서 Lock 을 걸어서 생기는 문제점을 해결해 주어야 하는데요 위 사진은 프로세스 A가 lock 을 한 경우 입니다. 1. 프로세스A 가 Lock 을 걸고 2. read / write 실행 3. 이때 프로세스 B가 접근하려 하지만 A의 Lock이 걸려있으므로 현재 접근 불가 이때 B 는 2가지 경우를 생각해볼 수 있는데 3-1 ) B가 Lock 을 얻지못한다면 에러를 retur..

Linux 2022.11.02