엔지니어 230

mkfifo 함수 예제

mkfifo(const char *pathname, mode_t mode) - 2개의 매개 변수가 필요하네. - mkfifo(파이프사용할 파일명, 모드) - 이걸로 FIFO 파일을 생성하면 이후로는 이파일을 가지고 파이프로 이동할 수 있다. - 동일한 fd를 이용한다면 다른 프로세스에서도 메시지를 받을 수 있다. - 주고 받는 양방향 불가. 수신하는 곳 #include #include #include #include #include #define FIFO_FILE "/tmp/fifo" #define BUFF_SIZE 1024 int main( void) { int counter = 0; int fd; char buff[BUFF_SIZE]; if(mkfifo(FIFO_FILE, 0666) == -1) { ..

엔지니어 2012.07.06

popen 함수 pclose 함수 예제

popen() - 명령어를 shell을 기동 시켜서 열고 pipe로 연결한다. - 이를 위해서 내부적으로 fork(), pipe()를 사용한다. - 실행 쉘인 /bin/sh에 -c 옵션을 사용하여 전달 pclose() - popen으로 열린 파이프 핸들 사용을 종료한다. #include #include #include #include int main() { FILE *fp = NULL; char cmd[1024] = {0,}; char buffer[1024]; pid_t ppid; pid_t *pid; snprintf(cmd, sizeof(cmd), "pidof -x /usr/sbin/sshd"); fp = popen(cmd, "r"); if( fp==NULL) { return -1; } fgets(bu..

엔지니어 2012.07.06

pipe 함수 예제

pipe() - 하나의 파이프 및 파이프에 대한 두 개의 파일 디스크립터가 생성 - 하나의 파이프를 프로세스들이 공유 #include "sys/types.h" #include #include #include #include #define MAXLINE 4096 /* max line length */ /* err_sys("") --> return(1) */ int main(void) { int n, fd[2]; pid_t pid; char line[MAXLINE]; if (pipe(fd) < 0) { printf("pipe error \n"); return(-1); /* err_sys("pipe error"); */ } if ( (pid = fork()) < 0) { printf("fork error \n..

엔지니어 2012.07.06

네트워크 프로그래밍 - 시리얼 통신 - 자료 수신을 위한 poll

2006.12.31 13:01:27 (*.138.143.127) 14819 54 / 0 이번 시간에는 시리얼 통신에서 자료를 수신하는 부분을 구현하려 합니다. 그러나 송신 보다 수신하는 부분은 생각할 점이 있습니다. 전송이야 이쪽에서 필요할 때 보내기만 하면 되기 때문에 "언제라는" 시간적인 문제가 없습니다. 그러나 수신은 자료가 언제 올지를 모르죠. 기다려야 한다는 것인데, 자료가 올 때까지 마냥 시리얼 포트만 쳐다 보고 있을 수 없습니다. 다른 일도 처리 해야죠. 해야할 일이 산더미처럼 쌓였는데, 마냥 포트만 쳐다 볼 수 없습니다. 이럴 때 쉽게 생각할 수 있는 것이 일을 처리하는 중에 잠시잠시 포트를 확인하는 방법입니다. 가령 예를 들어서 아래와 같이 하는 것이죠. while( 1) { // 다른 ..

엔지니어 2012.05.30

NMS의 기본 개념 - 장애관리

http://blog.daum.net/pinkky/6818685 (원본) NMS는 Network Management System의 약자로, 네트워크 관리 시스템 또는 망 관리 시스템이다. 이 말의 의미는 NMS는 네트워크를 관리하는 시스템이며 그 관리 대상이 네트워크 또는 망이라는 의미이다. 즉, 관리 대상이 네트워크 또는 망이라는 사실을 알 수 있다. 말장난 같다는 생각이 들지는 모르겠지만 NMS에서 관리대상의 정의란 매우 중요하다. 그렇다면 네트워크란 무엇인가? 네트워크라는 것은 전산 자원간의 연결 – 전산자원까지 포함해서 - 이다. 즉 "내 PC랑 네 PC랑 연결해서 잘 사용하고 싶어"라는 개념에서 네트워크의 개념이 출발한다고 보면 되겠다. 그렇다면 여기서 네트워크 관리자의 임무는 무엇일까? 네트워..

엔지니어 2011.08.23

Unix Domain Socket UDP

Unix Domain Socket - UDP 윤 상배 dreamyun@yahoo.co.kr 1절. 소개 우리는 이미 이전에 Unix Domain Socket를 이용한 IPC 에서 Unix Domain Socket 에 대한 기본적인 내용을 다루었었다. 그때는 SOCK_STREAM 을 이용한 연결지향의 Socket 를 사용했었는데, internet 소켓과 마찬가지로 UDP 특성 Socket 를 사용할수도 있다. 이번 글 에서는 UDP 를 이용한 Unix Domain Socket 에 대해서 알아보도록 하겠다. 2절. Unix Domain Socket (UDP) 2.1절. 특징 internet socket 상에서 UDP 를 다룰때, 관심을 가지는 특성이 비연결지향성이며, 그런이유로 데이타를 유실할수도 있으며, ..

엔지니어 2011.08.19

C언어 - 스트림(Stream)이란?

(카아알) Karl's the story of a proper life. C언어 - 스트림(Stream)이란? 2009/04/21 11:02 in I'm Developer. 스트림이란 일련의 문자열이며, C언어에서 자료를 입출력하기 위하여 사용하는 것으로 프로그램과 입출력 장치 사이에서 입출력 자료들을 중계하는 역할을 담당합니다. 스트림(Stream)이란 글자 그대로 해석하자면 '흐름', '흐르다'라는 뜻으로, 데이터를 입력 받거나 출력하려면 먼저 스트림에 일련의 바이트 문자들을 기록한 다음 스트림으로부터 데이터를 읽거나 특정 장치에 데이터를 출력하는 것입니다. 스트림의 장점 프로그램의 입출력 동작이 입출력 장치와는 독립적이기 때문에, 스트림이 어디로 가는지 어디에서 오는지에 대해 신경 쓸 필요가 없습니..

엔지니어 2011.08.11

리눅스 시스템 프로그래밍 8장 IPC

Facebook Joinc 그룹 Joinc QA 사이트 http://www.adamsinfo.com/mknod-tutorial/ 1 IPC 1.1 IPC 소개 위의 그림은 2장에서 간단히 설명했던 리눅스 커널 구조그림이다. 이번장에는 이중 IPC 에 대해서 다룰 것이다. 그림에서 처럼 Process는 완전히 독립된 실행객체이다. 서로 독립되어있다는 것은 다른 프로세스의 영향을 받지 않는다는 장점이 있다. 그러나 독립되어 있으니 만큼 별도의 설비가 없이는 서로간에 통신이 어렵다는 문제가 있다. 이 문제는 이 전장의 쓰레드와 비교해보면 두드러진다. 이를 위해서 커널영역에서 IPC라는 내부 프로 세스간 통신 - Inter Process Communication -을 제공한다. 프로세스는 커널이 제공하는 IPC..

엔지니어 2011.08.11