fork 함수로 자식 프로세스를 생성할 수 있다고 하였습니다. 그러면, 부모 프로세스가 자식 프로세스가 종료가 될 때 까지 대기를 하게 할 수 없을까요? 그럴 때 wait 함수를 쓰시면 됩니다. pid_t wait(int *stat); 성공 시에, 종료된 자식의 pid를, 실패하면 -1을 반환합니다. 물론 stat에 NULL값을 넣어도 되는데요. 이 때에는, 전달된 매개변수에 상태값을 저장하지 않습니다. man ps를 쳐 봅시다. 스크롤을 쭉 내리시면 아래와 같은 설명이 나오는데요. 이는, 상태값에 따른 프로세스의 상태를 의미해요. 여기서 보아야 할 것은 R, 그러니까 run queue에 있는 상태. 이것과 S인데요. S는 interruptible sleep을 의미합니다. 인터럽트를 받을 수 있는 sle..
OS/리눅스 검색 결과
오늘은 sleep sort에 나왔었던, unistd.h에 있는, 리눅스 fork 함수에 대해서 알아보겠습니다. int fork(); 이것만 보면 별 거 없어요. 그냥 프로세스를 생성해주는 역할을 합니다. 그런데, 리턴 값이 2개인데요. 예를 들어서 process A에서 fork가 호출되어서 process B가 생성이 되었다고 합시다. 그러면, A의 자식은 B가, B의 부모는 A가 됩니다. 그러면, 이 때, 프로세스 B에서는 0이라는 값이, 프로세스 A에는 B의 pid 값이 리턴이 됩니다. 이제 이 함수를 호출하면 어떤 식으로 흘러가는지 예제만 보도록 하겠습니다. 먼저 global 변수와, heap, stack 변수를 하나씩 생성했습니다. 그리고 10번째 줄에서 문제의 함수를 호출하였습니다. 일단, 그러면..
보통 stdin은 표준 입력, stdout은 표준 출력, stderr은 표준 에러를 나타내는 것들입니다. 이에 대해서는 파일에 대해서 다룰 때 이야기 하도록 하고요. 자세히 들어가면 글이 길어질 듯 하니, 간단하게 어떤 식으로만 쓰는지 알아보도록 하겠습니다. 대략적인 그림부터 보겠습니다. 이 그림만 보면, stdin, 즉 표준 입력 스트림에서 읽어오고, stdout, 표준 출력 스트림에 씁니다. 그리고 오류가 발생한 경우 stderr, 표준 에러 스트림에 씁니다. 그런데, 이것을 재지정 하는 방법이 없을까요? 이를 리다이렉션이라고 이야기 합니다. 먼저, >는, 출력 재지향을 의미합니다. 먼저 head 명령어를 이용해 봅시다. 저는 아직 리다이렉션을 하지 않았기 때문에, stdout 스트림을 쓸 것이고, ..
리눅스에는 심볼릭 링크와 하드 링크가 있습니다. 이것들을 설명하기 위해서는 i_node라는 친구를 알아야 하는데요. 여기에서는 그냥 실제 디스크에 저장되어 있는 내용을 가리키는 무언가라고 생각하는 게 좋을 듯 싶네요. 나중에 자세히 언급할 듯 싶습니다. 먼저 폴더 안에 1.txt랑 2.txt를 생성합니다. 1.txt에는 chogahui is my dog라는 내용이 들어가 있습니다. 그리고 2.txt에는 그가 maltize라는 내용이 들어가 있습니다. 여기까지는 어렵지 않습니다. 저는, 1.txt를 심볼릭 링크로 연결하는 일명 soft랑, 2.txt를 하드 링크로 연결하는 hard를 생성하였습니다. 이것을 a 옵션과, l, i 옵션을 붙인 ls 명령어로 봅시다. 그러면 대충 이렇게 나오는 것을 볼 수 있는..
이전 글에서 절대 경로와 상대 경로를 주구장창 설명한 이유는 pwd 명령어를 설명하기 위해서입니다. 이 명령어는 현재 내가 작업하고 있는 위치를 절대 경로로 출력하는 함수입니다. 그러면 루트를 기준으로 현재 내가 있는 위치를 화면에다가 프린트 할 거에요. 만약에 루트라면, /만 출력을 할 거에요. 루트에는 여러가지 폴더들이 있는데요. 그 중, 저는 home 디렉토리에 들어가 보겠습니다. 그러면 이 안에 chogahui05라는 폴더가 또 있는데요. 이 안으로 들어가면 터미널이 켜졌을 때, 작업 디렉토리가 나타납니다. 저는 /home/chogahui05라는 디렉토리에서 작업을 할 겁니다. 그리고 몇 개의 디렉토리와, 폴더들을 만들 겁니다. 이것을 디렉토리 구조로 나타내면 다음과 같습니다. chogahui05..
최근댓글