-
Notifications
You must be signed in to change notification settings - Fork 0
/
bgprocesses.c
99 lines (81 loc) · 1.6 KB
/
bgprocesses.c
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "functions.h"
//linked list to keep track of all background proccesses
void insert(int pid, char *arg)
{
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->pid = pid;
newNode->arg = arg;
++global_jobnum;
newNode->jobnum = global_jobnum;
newNode->next = head;
// printf("\nnewNode->pid = %d newNode->arg = %s \n", newNode->pid, newNode->arg);
head = newNode;
}
char* searchName(int pid)
{
// printf("\nentered search\n");
struct Node* curr = head;
// printf("value of curr %d\n",curr);
while(curr != NULL)
{
int rpid = curr->pid;
char* com = curr->arg;
// printf("curr->pid %d curr->arg %s\n",rpid,com);
if(rpid == pid)
{
// printf("MATCHED\n");
return com;
}
else
{
curr = curr->next;
}
}
return " ";
}
int searchbyJob(int jobnum)
{
// printf("\nentered search\n");
struct Node* curr = head;
// printf("value of curr %d\n",curr);
while(curr != NULL)
{
int rpid = curr->pid;
char* com = curr->arg;
int jn = curr->jobnum;
// printf("curr->pid %d curr->arg %s\n",rpid,com);
if(jn == jobnum)
{
// printf("MATCHED\n");
return rpid;
}
else
{
curr = curr->next;
}
}
return -1;
}
int delet(int pid)
{
// printf("entered delete\n");
struct Node* curr = head;
struct Node* prev;
if(curr != NULL && curr->pid == pid)
{
// write(2,"deletion complete\n",19);
head = curr->next;
free(curr);
return 0;
}
while(curr != NULL && curr->pid != pid)
{
prev = curr;
curr = curr->next;
}
if(curr == NULL) return -2;
prev->next = curr->next;
free(curr);
// write(2,"deletion complete\n",19);
return 0;
}