23.11.19 최초 작성
Debian 계열 리눅스
)에 맞는 크롬 패키지를 다운로드 받는다filebrowser
를 설치한다/home/local/bin
경로에 설치된다 (Debian 계열 리눅스
)curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash filebrowser -r <파일 경로>
/main.c
: -/system/system_server.c
: create_system_server()
함수 호출 시 fork()
시스템 콜로 자식 프로세스를 생성해 system_server()
함수를 작동 시킴int create_system_server()
{
pid_t systemPid;
const char *name = "system_server";
printf("Creating system_server process \n");
switch(systemPid = fork()) {
case -1:
perror("system_sever process folk failed \n");
case 0:
system_server();
break;
default:
break;
}
return 0;
}
/ui/gui.c
: create_gui()
함수 호출 시 fork()
시스템 콜로 자식 프로세스를 생성 후 execl()
시스템 콜을 통해 크롬 웹브라우저를 작동 시킴포트 번호 : 8282
, int create_gui()
{
pid_t systemPid;
printf("Creating GUI process \n");
sleep(3);
switch(systemPid = fork()){
case -1 :
perror("GUI process fork failed \n");
case 0 :
if(execl("/usr/bin/google-chrome-stable", "google-chrome-stable", "http://localhost:8282", NULL)) {
perror("GUI process execl failed \n");
}
printf("Finish GUI Process\n");
break;
default :
break;
}
return 0;
}
/ui/input.c
: create_input()
함수 호출 시 fork()
시스템 콜로 자식 프로세스를 생성해 input()
함수를 작동 시킴int create_input()
{
pid_t systemPid;
const char *name = "input";
printf("Creating input process\n");
switch(systemPid = fork()){
case -1:
perror("input process create failed \n");
case 0 :
input();
break;
default :
break;
}
return 0;
}
/ui/web_browser.c
: create_web_server()
함수 호출 시 fork()
시스템 콜로 자식 프로세스를 생성 후 execl()
시스템 콜을 통해 create_gui()
를 통해 작동한 크롬 브라우저 위에서 filebrowser를 작동 시킴 int create_web_server()
{
pid_t systemPid;
printf("Creating web_server process\n");
sleep(5);
switch(systemPid = fork()){
case -1 :
printf("web_server process fork failed \n");
case 0 :
if(execl("/usr/local/bin/filebrowser", "filebrowser", "-p", "8282", (char *) NULL)) {
perror("web_server process execl failed \n");
}
printf("Finish web_server process\n");
break;
default :
break;
}
return 0;
}