이번 포스팅에서는 지난 포스팅에 이어서 시그널에 대해 알아보겠습니다! sigprocmask를 활용해서 프로그램 출력이 0.000 0.000, 1.000 1.000과 같은 수의 쌍이 되도록 코드를 작성해보겠습니다. 이번 예제에서 여러개의 신호를 다룰 예정입니다. 많은 신호를 다루기 위해서는 신호를 집합으로 표시하는 자료 형식이 필요합니다. 이때 우리는 sigset_t라는 자료형을 사용합니다. sigset_t을 이용해서 신호를 block, unblock, pending할 수 있습니다. 이러한 작업을 하기위해 다양한 함수가 있습니다. int sigfillset(sigset_t *set) : set에 리눅스에 있는 모든 시그널이 들어간다. (다루지 못하는 SIGSTOP,SIGKILL은 못들어간다.) int si..
지난 포스팅에서 시그널의 개념에 대해 알아보았습니다. 이번 시간에는 SIGNAL 관련 예제를 알아보겠습니다~ 1. 무한 루프 프로그램에게 시그널 보내기 #include #include #include int main(){ while(1){ printf("pid : %d \n",getpid()); sleep(1); } return 0; } 다음은 무한으로 자신의 PID를 출력하는 프로그램입니다. 프로그램을 실행시키고 시그널을 보내겠습니다! 이때 [PID]에는 출력되는 자신의 pid를 입력하시면 됩니다. (ex. 2601) SIGINT -> (1) Ctrl+C 누르기 (2) 터미널에 $kill -SIGINT [PID] SIGSTOP-> (1) Ctrl+Z 누르기 (2) 터미널에 $kill -SIGSTOP [..
안녕하세요! 오늘은 리눅스의 시그널(Signal) 개념에 대해 알아보겠습니다! 시그널이란 리눅스 시스템 상에서 외부에 발생한 비동기적인 이벤트를 프로세스에게 알려주는 일종의 소프트웨어적인 인터럽트 역할을 하는 것을 의미합니다!! 프로그램이 실행되면서 floating point error, power failure, alarm clock rings, death of a child process, Ctrl-C, Ctrl-Z와 같은 예상하지 못한 이벤트들이 발생합니다. 시그널은 이런 비동기적인(asynchronous)한 이벤트들을 알려주기 위한 수단입니다! 시그널이 전달되는 방식은 다음과 같습니다. 프로세스에 시그널이 들어올 경우 프로세스는 다음 세가지 방법 중 하나를 선택합니다. ignore it : 무시하..
지난 포스팅에 이어서 리눅스 프로세스 관련 예제에 대해 살펴보겠습니다! 지난번 포스팅에서 프로세스 제작 사이에 숫자를 프린트 하는 것 까지 했습니다! 6. Execve() 실행 파일 만들기 exec() 호출을 이용해 ls 명령어를 -l 옵션과 -a 옵션을 줘서 실행시켜보겠습니다! #include #include int main(){ char *new_argv[]={"ls","-l","-a",NULL}; execve("/bin/ls",new_argv,NULL); printf("Hello World! \n"); //출력안됨 return 0; } 이 코드에서 주의해서 볼 부분이 있습니다. 바로 printf("Hello world! \n"); 이 코드입니다! 위의 코드에서 printf는 실행되지 않습니다. 그 ..
안녕하세요! 이번 포스팅에서는 리눅스 관련 개념인 프로세스의 예제를 다뤄보겠습니다~ 먼저 시작하기에 앞서 프로세스를 관리해줄 System Call들을 살펴보겠습니다! 1. Process Management System Calls getpid : 프로세스의 ID를 얻는다. getppid : 부모 프로세스의 ID를 얻는다. fork : child 프로세스를 만들기 위해 부모 프로세스를 복제한다. exec : code, data, stack 등을 replace를 교체한다. exit : 프로세스를 종료한다. 종료할 때 상태 변수를 바꾸기 위해 사용한다. wait : 자식 프로세스를 위해 대기한다. 2. fork() 출력 예제 [myfork] fork 하는 순간 parent 프로세스에서 리턴 한 번, child ..
안녕하세요! 오늘은 리눅스의 프로세스에 대해 알아보겠습니다! ! 1. 프로세스의 정의 프로세스란 프로그램이 수행되고 있는 상태를 의미합니다. 따라서 프로그램 != 프로세스 != 프로세서 인거죠. 그럼 각각의 정의를 알아보겠습니다! 프로세스 (Process) : 프로그램이 실행중인 상태 프로그램 (Program) : 어떤 문제를 해결하기 위해 컴퓨터에게 주어지는 처리 방법과 순서를 기술한 일련의 명령문의 집합체 프로세서 (Processor) : 프로그램들이 실행할 수 있도록 해주는 하드웨어 프로세스는 두가지 abstractions있습니다. 혼자 CPU를 독자적으로 수행하는 것 같은 착각 시스템 메모리를 프로그램 혼자 쓰는 것 같은 착각 이러한 현상은 여러개 프로세스를 빠르게 스위칭하고 가상 메모리 시스템에..
지난 포스팅에 이어서 빠르게 시스템 콜 예제 두 개를 더 보겠습니다!! 3. mycp 프로그램 작성 mycp 프로그램은 첫번째 인자로 지정된 파일을 두번째 인자로 지정한 파일로 복사하는 프로그램입니다. mycp source-file dest-file 명령어를 입력했을때 실행되도록 만들어봅시다. 이때, dest-file의 모드는 rw-rw-rw-로 세팅해야합니다. 사용자,그룹,외부인 모두 읽고 쓰는 것만 할 수 있는 모드입니다. #include #include #include #include #include #include #include int main(int argc,char *argv[]){ int fd_read,fd_write; char buffer[BUF_SZ]; if(argc != 3){ pri..
- Total
- Today
- Yesterday
- Signal
- 백준
- googleapis
- nodejs
- 혼공단 9기
- 리눅스
- 혼공단
- 스페인 교환학생
- Process
- 자바스크립트
- 개발일지
- 혼공
- 혼공단 SQL
- 백엔드 개발
- Linux
- 개발
- JS
- MySQL
- 교환학생
- C++
- 혼공학습단
- 깃 예제
- 스페인
- JavaScript
- 해커톤
- SQL
- 프로젝트
- 공룡책
- 운영체제
- AWS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |