반응형

fork 7

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

제한시간 1초, 수학문제 프로그램 해킹?!

/* * http://sosal.tistory.com/ * made by so_Sal */ /* * 이 포스팅을 이해하기 위해선 * c언어 srand(), time(), rand() 함수들 * 리눅스 read write 파일 시스템콜 뿐만 아니라 * fork(), execl(), pipe(), dup2() 프로세스 시스템콜을 * 미리 아셔야 이해할 수 있습니다./ */ 예전에 숫자 맞추는 게임(?)이 널루트 가입문제로 나왔었던 기억이..있습니다 ㅎㅎ 아마 억대자리수 덧셈이었나?? 그럴텐데.. 기억이 잘 안나네요. (동아리 선배분께서 열심히 풀고계신걸 잠깐 본적이 ㅎㅎㅎ) 여튼, 번뜩 생각나서 고걸 부셔버리는걸로.. 한번 포스팅 해보려고 합니다. 목적은 1초안에 1만자리수 덧셈문제를 풀기! 입니다. sra..

Linux/Linux_technic 2010.11.06

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 시스템콜은 자식프로세스중 하나가 종료될 때까지 부모 프로세스를 기다리게..

Socket - 04. 다중 프로세스 네트워크 프로그래밍

/* * http://sosal.tistory.com/ * made by so_Sal */ 일반적으로 서버 프로그램은 불특정 다수의 클라이언트로부터 서비스 요청을 처리할 수 있는 다중 사용자 서버 (Multi-user server)로 개발됩니다. 다중 사용자 서버는 반복 처리 서버(Iterative Server)와 동시 처리 서버(Concurrent Server)로 개발될 수 있습니다. 반복 처리 서버는 개발하기 쉽고 이해하기 쉽지만, 사용자가 많아질 경우 클라이언트가 서비스를 위해 대기하는 시간이 길어질 수 있기 때문에 현실적으로 사용하기 어렵습니다. 동시 처리 서버는 다수의 클라이언트로부터 서비스 요청을 동시에 처리함으로써 서비스 제공을 보장합니다. 대표적인 모델은 다중프로세스와 다중 스레드 등이 존..

반응형