Files
N7-S6-SEC-minishell/processlist.c
2021-01-09 17:11:34 +01:00

81 lines
1.8 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "processlist.h"
process * setStatus(process * pr ,int pid_proc, int status){
if(pr == NULL){}
else if(pr->pid == pid_proc){
pr->status = status;
}
else{
setStatus(pr->procSuivant, pid_proc, status);
}
return pr;
}
process * supprimer(process* pr ,int pid_proc){
process * toDel;
if(pr == NULL){}
else{
if(pr->pid == pid_proc){
toDel = pr;
pr = pr->procSuivant;
}
else{
process * tmp = pr;
while(tmp->procSuivant->pid != pid_proc){
tmp = tmp->procSuivant;
}
toDel = tmp ->procSuivant;
tmp->procSuivant = tmp->procSuivant->procSuivant;
}
free(toDel->commande);
free(toDel);
}
return pr;
}
process * inserer(process * pr , int id, int pid, int status, char * commande){
process * toAdd = malloc(sizeof(process));
toAdd->id = id;
toAdd->pid = pid;
toAdd->status = status;
toAdd->commande = commande;
toAdd->procSuivant = pr;
pr = toAdd;
return pr;
}
int taille(process * pr){
if(pr == NULL)
return 0;
else
return 1 + taille(pr->procSuivant);
}
int getPID(const process * pr, int idMinishell){
if(pr == NULL)
return -1;
if(pr->id == idMinishell){
return pr->pid;
}
else return getPID(pr->procSuivant, idMinishell);
}
void afficherProcess(process * pr){
if(pr != NULL){
printf("%-12d%-12d", pr->id, pr->pid);
if(pr->status>0)
printf("%-12s", "actif");
else
printf("%-12s", "suspendu");
printf("%s", pr->commande);
printf("\n");
afficherProcess(pr->procSuivant);
}
}