..FILE:fifo.c/******************************************************************************* Named pipe를 생성하고 Count 변수 파일도 생성해준다. 그리고 Producer 자식을 ** 2개 생성하고 Counsumer를 생성한다. Producer는 Count 파일을 공유 하며 fifo에 ** 자신의 아이뒤와 Count값을 저장한다. ** Cousumer 프로세스는 fifo에 있는 내용을 읽어와서 화면에 출력해주며, ** 문자가 입력되면 화면에 출력해주는 프로세스 기능을 한다. *******************************************************************************/#include #include #include #include #include #include #include #include #define MSGSIZ 10char *fifo = "fifo"; // Named pipe 선언char *count = "count"; // 파일 공유 변수 count 선언int Producer(int process_id); // Producer 함수 선언int Consumer(); // Consumer 함수 선언int main(){int fd1, i;/* fifo가 이미 존재하지 않으면 생성한다. */if (mkfifo(fifo, 0666) == -1){if (errno != EEXIST) // 올바르게 만들어지지 않았으면 에러 출력perror("receiver: mkfifo");}/* count 변수가 이미 존재하지 않으면 생성한다. */if((fd1 = creat(count,0666)) == -1){if(errno != EEXIST) // 올바르게 만들어지지 않았으면 에러 출력perror("receiver : tmp");}/* 두개의 Producer 자식을 생성 */for(i = 1; i
..FILE:loginsheel.c/****************************************************************************** 사용자를 인증하기 위해 userpasswd 파일에 사용자 ID와 passwd를 저장 ** login : prompt를 화면에 출력 후 ID와 passwd를 입력받아 비교 후 맞으면 ** login처리를 하고 틀리면 다시 login 처리를 한다. ** 사용자 id가 exit이면 프로그램을 종료한다. ** login처리가 되면 >>Enter Command에서 표준 입력을 받고 ls, ps, stty 명령 중 ** 하나를 입력받아 child process를 실행, parent process는 명령을 입력 받아 ** 계속해서 child process를 생성한다 ** >>Enter Command에서 quit라는 명령이 들어오면 shell 프로그램을 중지하고 ** ls, ps, stty가 몇번 수행했는지 출력하고 login 작업을 다시 수행한다. ******************************************************************************/#include#include#include#include#define EOL 1#define ARG 2#define AMPERSAND 3#define SEMICOLON 4#define MAXARG 512#define MAXBUF 512#define FOREGROUND 0#define BACKGROUND 1char *prompt = ">>Enter Command : "; // shell 프로그래밍 할때 표준 입력 프롬프트static char inpbuf[MAXBUF], tokbuf[2*MAXBUF], *ptr = inpbuf, *tok = tokbuf;static char special [] = {' ','t', '&', ';', 'n', '