-
Notifications
You must be signed in to change notification settings - Fork 0
/
TinyShell.cpp
58 lines (48 loc) · 1.93 KB
/
TinyShell.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/******************************************************************
* ------------------- WELCOME TO OUR TINYSHELL -------------------
* @author: Le Trong Khanh,
* Pham Van Linh,
* Nguyen Van An,
* Ha Manh Hung,
* Le Hong Ung
* @name of Program: Tiny Shell
* @IT1-01-K64
* @05-06-2021
* ----------------------------------------------------------------
******************************************************************/
#include "Analyse.h"
#include "Command.h"
#include "Process.h"
using namespace std;
int main (int argc, char** argv) {
char cur_dir[MAX_CWD_LENS];
/* Ctrl + C => STOP */
signal(SIGINT, sighandler);
/* set màu chữ cho shell */
char color[] = "green";
setColor(color);
char *cmd = (char*)calloc(MAX_BUFFER_SIZE,sizeof(char)); /*Cấp phát bộ nhớ để nhập dòng lệnh command VD: cd, dir, ....*/
int stop = 0; /**/
while(!stop) { /* Nếu vẫn chưa stop thì thực hiện nhập và chạy lệnh */
if(printPrompt(cur_dir) == -1){ /* Kiểm tra, in ra đường dẫn VD: C:\Users\Admin\> $ .....*/
break;
}
fflush(stdin);
cin.getline(cmd, MAX_BUFFER_SIZE); /* Nhập lệnh command */
cin.clear();
// cout << "HUST" << endl;
// sleep(1);
// fixCmd(cmd); /* Chỉnh sửa câu lệnh tránh các lỗi nhập cách khoảng */
char **args = separate_line(cmd); /* Chia câu lệnh */
/**
* VD: dir C:\Users\Admin .....
* => args[0] : dir
* => args[1] : C:\Users\Admin
* .....
**/
stop = execute(args); /* Thực hiện lệnh, trả về 0 nếu tiếp tục, trả về 1 để thoát*/
free(args); /*Giải phóng các con trỏ lệnh*/
}
free(cmd); /*Giải phóng lệnh*/
return EXIT_SUCCESS;
}