-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshell.h
78 lines (62 loc) · 1.58 KB
/
shell.h
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<fcntl.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <signal.h>
#include <errno.h>
#define MAX 100
#define MAX_STACK 32
#define MAX_NUM 10
#define ERR_PAR "[-] Error: Invalid parameters\n"
#define ERR_COM "[-] Error: Invalid Command\n"
#define CTRLZ 1
#define CTRLC 2
#define NORM_EX 0
#define NOT_EXIST 3
#define CONT 4
#define TRUE 1
#define FALSE 0
#define READ 0
#define WRITE 1
/*job status*/
#define STAT_RUN 1
#define STAT_EXIT 2
#define STAT_STOP 3
#define STAT_BACK 4
int IN;
int OUT;
int runback;
int child;
int shell_pid;
/* REGISTER maintained by shell to keep track of bg running children, stopped children, etc.*/
typedef struct{
pid_t pid;
char name[100];
int status;
} bgjobs;
typedef struct{
bgjobs runningprocess[MAX_STACK];
int activeprocesses[MAX_STACK];
int count;
}ProcessList;
ProcessList processlist;
/*Function Declarations*/
int parse(char *command, char *argv[], char *infile, char *outfile);
int startwaiting(pid_t pid, int showlog);
int runcommand(int input, int first, int last, char* argv[], char* infile, char* outfile);
void runNormalCommand(char *argv[], char* infile, char* outfile, int ispipe);
char *extractCommand(char *line);
int checkForBuiltIns(char *line);
void sigchldhandler(int sig);
void sigstophandler(int sig);
void sigintHandler(int sig_num);
void show_activejobs();
void get_activejobs();
int update_status(pid_t pid, int new_status);
void intialise_processlist();
void kill_all();
void custom_gets(char *rawCommand);
int getIndexFrom_pid(pid_t pid);