반응형

process 9

Linux Shell 구현 소스

/* * http://sosal.tistory.com/ * made by so_Sal */ 유닉스 프로그래밍 수업에서 (비록 리눅스를 사용하지만)쉘 프로그래밍 과제가 나와, 했던 과제를 한번 올려 봅니다.- Linux shell programming 쉘(shell) 구현에서 간단한 시그널처리와 fore / back-ground 프로세싱 처리 등에 관하여 구현해보았습니다. * SIGNAL 기능. - ctrl + c : SIGINT - ctrl + z : SIGTSPT - wait 상태의 부모프로세스는 SIGCHLD로 다시 run. - rs (restart) : 자식을 SIGCONT signal로 stop 상태를 run으로, 부모는 restart된 자식을 다시 waitpid로 기다림 * lss : ls - ..

Linux/Linux_Source 2011.05.23

/proc/pid/maps : 파일 프로세스의 메모리 공간

/* * http://sosal.tistory.com/ * made by so_Sal */ - 프로그램 안에서, Code segment, data segment, stack segment, heap segment, .bss 등을 살펴보겠습니다. "유닉스 계열은 모든 것이 파일, 프로세스 이다. " 라는 말을 무수히 들어보셨을 것입니다. 그렇다면 중요한 정보들이 어디에 파일로 저장되어 자리하고 있는지 알게된다면 쉽게 정보들을 찾을 수 있을 것 같습니다. proc : process의 줄임말이며, 이곳에 프로세스의 정보들이 저장됩니다. 사용자 프로세스의 정보들을 이곳에서 얻을 수 있으며 심지어 조작도 가능하다는 점에서 /proc 파일시스템은 굉장히 유용합니다. 위 그림에서 보는바와 같이 (pstree 명령어)..

Linux/Linux_technic 2011.01.29

시스템 보안 04.악성 프로그램 프로세스 종료 문제

/* * http://sosal.tistory.com/ * made by so_Sal */ 관리중인 solaris 시스템이 어느날 해킹을 당하여 외부 침입자가 불법침입을 하였다. 다행히 외부침입자의 침입경로를 파악하여 제거하였으나, 불법침입을 한 상태에서 행한 불법작업내역은 아직 확인하지 못하였다. 특히 이 침입자는 이 시스템을 경유지로 하여 타 시스템에 대하여 지속적인 스캐닝 또는 서비스거부공격을 하고 있을 가능성이 매우 높다. solaris 시스템을 평소 관리했던 상식에 비추어서 시스템내에서 의심스럽게 보이는 프로세스를 찾아서 강제종료 시키시오. --- 단순히 프로세스 목록을 찾아, 강제종료만 하면 되는 문제입니다. 의심스럽게 보이는 프로세스를 찾기 위해선, 일단 프로세스 목록을 보는 방법을 알아야합..

fork, pipe를 이용한 간단한 프로세스 통신 예제

/* * http://sosal.tistory.com/ * made by so_Sal */ #include #include #include int main(void){ char buffer[BUFSIZ]; int fd[2]; if(pipe(fd)==-1){ perror("pipe error..\n"); exit(0); } pid_t pid; pid = fork(); if(pid == -1){ perror("fork error..\n"); exit(0); } else if(pid==0){ //자식 프로세스의 경우// write(fd[1],"This letter is from child",BUFSIZ); sleep(1); //레이스 컨디션 문제 발생. 부모보다 자식이 먼저 fd에 있는 자료를 //가져갈 수 ..

Linux/Linux_Source 2009.12.18

Socket - client 소스, 다중 프로세스 채팅방

/* * http://sosal.tistory.com/ * made by so_Sal */ / * * 리눅스 기반입니다. * TCP/IP AF_INET 외부 네트워크 도메인 기반입니다. * fork() 함수를 이용한 다중 프로세스 원리 기반 채팅방입니다. * 문자열이 자신이 입력한것인지, server가 입력한 것인지 구분하는 ID는 넣지 않았습니다. * exit를 입력하거나 받으면 종료됩니다. * 최대로 보낼수있는. 받을수 있는 문자열의 길이는 MAXLINE 메크로를 통하여 정하였습니다. * 프로그램의 매개변수는 argv[1]과 argv[2]로, 각각 ip와 port번호를 받습니다. * made by sosal. http://sosal.tistory.com/ * / #include #include #in..

Linux/Linux_Source 2009.11.07

Socket - server 소스. 다중 프로세스 채팅방

/* * http://sosal.tistory.com/ * made by so_Sal */ / * * 리눅스 기반입니다 * TCP/IP AF_INET 외부 네트워크 도메인 기반입니다. * fork() 함수를 이용한 다중 프로세스 원리 기반 채팅방입니다. * 문자열이 자신이 입력한것인지, client가 입력한 것인지 구분하는 ID는 넣지 않았습니다. * exit를 입력하거나 받으면 종료됩니다. * 최대로 보낼수있는. 받을수 있는 문자열의 길이는 MAXLINE 메크로를 통하여 정하였습니다. * 프로그램의 매개변수는 argv[1]로 port번호를 받습니다. * made by sosal. http://sosal.tistory.com/ * / #include #include #include #include #in..

Linux/Linux_Source 2009.11.07

System - 05. wait() 프로세스 동기화

/* * http://sosal.tistory.com/ * made by so_Sal */ fork 함수로 생성된 자식 프로세스는 독립적으로 실행됩니다. 따라서 부모프로세스는 자식프로세스가 하는 일을 알 수 없고, 변수의 공유나 자식프로세스가 계속 살아있는지 등에 대한 정보를 기본적으로는 알 수 없습니다. #include #include pid_t wait(int *stat_loc); //call by reference stat_loc은 종료된 프로세스의 pid 값을 리턴하여 보통 pid_t 변수에다 저장합니다. ex) int stat_loc; pid_t child_pid; child_pid = wait(&stat_loc); wait 시스템콜은 자식프로세스중 하나가 종료될 때까지 부모 프로세스를 기다리게..

System - 02. system() 자식 프로세스

/* * http://sosal.tistory.com/ * made by so_Sal */ system() 함수에 대해 알아보겠습니다. #include int system(const char * string) system() 함수는 굉장한 편리함을 가져다 주는 함수입니다. 어떻게 보면 게으른 사람들의 전유물이기도 하지요.. shell? :: 사용자가 입력하는 명령어들을 기계어로 번역해주는 명령 해석기 쉘은 사용자가 운영체제와 대화할 수 있는 중간 역할자. 인터페이스가 됩니다. 쉘에서 사용자가 한 말을 받아 운영체제에 전해주고, 운영체제는 그 답을 쉘을 통해서 사용자에게 보여주게 되는것입니다. 쉘 역시 하나의 프로그램입니다. (bash, sh, csh 등 다양한 종류의 쉘이 있는데.. 리눅스 콘솔창에서 우..

System - 01. Process 개념

/* * http://sosal.tistory.com/ * made by so_Sal */ 프로세스 :: 컴퓨터 내에서 실행중인 프로그램을 일컫는 용어. 프로세스란건 아주 간단합니다. Ctrl + Alt + delete로 작업관리자를 켜봅시다. 프로세스 텝을 가보시면 프로세스들의 목록을 쭉~ 보실 수 있습니다. putty를 4개나 켜놨더니 프로세스에 4개가 올라와있네요. 항상 켜져있는 메신저 na**까지 보입니다. 프로세스, 쉽게 와닿나요? 리눅스는 위 그림의 윈도우와 같은 다중 태스킹 운영체제입니다. 한 시점에서 여러 개의 프로그램들이 실행되는데, 각 실행중인 프로그램은 하나의 프로세스가 되고, 물론 하나의 프로그램이 여러개의 프로세스가 될 수 있습니다. 따라서 여러 사용자들이 하나의 프로그램을 실행시..

반응형