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");
        return(-2);
        /* err_sys("fork error"); */

    } else if (pid > 0) { /* parent */

        close(fd[0]);
        write(fd[1], "Hello world\n", 12);

    } else { /* child */
        close(fd[1]);
        n = read(fd[0], line, MAXLINE);
        write(STDOUT_FILENO, line, n);
    }

    return(0);
}
/* The end of function */

=============================================================

파이브열고

포크로 자식 프로세스 만들어다가

read시키는데

이떄, 부모프로세스는 write으로 파이프의 내용을 읽어온다.

결국 위의 코드의 결과는

printf("%s\n", "Hello world");

와 동일하게 나옴. write함수에서 fd들어갈곳에 STDOUT_FILENO플래그를

넣었으니깐.

=============================================================

pipe() 함수는 파일 디스크립터 쌍을 생성하네, 2개 생성하는데.

filedes[2] => filedes[0] Read, filedes[1] Write. 용도로 만든다.

사용법
#include <unistd.h>

int pipe(int filedes[2]);

=============================================================

fork()함수는 Child process 생성하는 기본적인 멀티 프로세싱 함수

사용법
#include <unistd.h>

pid_t fork(void);

=============================================================

close()함수는 pipe로 열린 descriptor 닫아버리는 함수

SYNOPSIS
#include <unistd.h>

int close(int fd);

=============================================================


출처

1. advanced programming in the unix environment

 2. http://gatolu.tistory.com/entry/%ED%8C%8C%EC%9D%B4%ED%94%84-%ED%95%A8%EC%88%98 

반응형

'Language > C' 카테고리의 다른 글

mkfifo 함수 예제  (471) 2012.07.06
popen 함수 pclose 함수 예제  (175) 2012.07.06
다차원 배열을 1차원 배열로 변경하고자 할 때  (161) 2011.08.11
C언어 - 스트림(Stream)이란?  (154) 2011.08.11
리눅스 시스템 프로그래밍 8장 IPC  (148) 2011.08.11

OS별로 자주 쓰이는 CPU, Memory등의 정보확인 방법에 대한 비교이다.

일부 command는 Root 권한으로 수행되어야 한다.

   

1. CPU 정보

AIX            lsdev -Cc processor HP-UX       ioscan -fnC processor

SOLARIS    psrinfo -v

Tru64         psrinfo -v

LINUX        cat /proc/cpuinfo


2. Physical RAM

AIX            bootinfo -r

HP-UX       grep -i Physical /var/adm/syslog/syslog.log

SOLARIS    Prtconf

Tru64         uerf | grep memory

LINUX        free 


3. Kernel Bits

AIX            bootinfo -K

HP-UX       getconf KERNEL_BITS

SOLARIS    isainfo -kv

Tru64        64

LINUX       getconf WORD_BIT  


4. Service Switch

AIX           /etc/netsvc.conf

HP-UX      /etc/nsswitch.conf

SOLARIS   /etc/nsswitch.conf

Tru64       /etc/svc.conf

LINUX      /etc/nsswitch.conf  


5. NIC

AIX            ifconfig -a

HP-UX       lanscan -v

SOLARIS    ifconfig -a

Tru64         ifconfig -a

LINUX        ifconfig -a 


6. Administrator

AIX            smit

HP-UX       sam

SOLARIS    admintool

Tru64      

LINUX        linuxconf 
   

 

출처

http://javagosu.tistory.com/12

반응형

'Linux' 카테고리의 다른 글

Unix Domain Socket UDP  (304) 2011.08.19
[명령어]Message Queue 설정 및 확인  (319) 2011.08.11
RAID  (320) 2011.08.11
SNMP란 무엇인가요?  (308) 2011.08.11
grep  (638) 2011.08.11

+ Recent posts