Mais le problème est le PID que j'imprime avant d'envoyer à travers la méthode et le PID que j'imprime après l'avoir reçu dans la méthode sont totalement différents. Je ne peux pas comprendre cela .Je crée un processus d'élimination en utilisant le PID
void killbyPIDprocess(struct process** ptr,char* p)
{
int i=0;
printf("hi");
while(ptr[i]!=NULL)
{
printf("Inside while loop");
printf("%d\n",ptr[i]->pid);
printf("%d\n",*p);
if(strcmp(ptr[i]->pid,p)==0)
{
printf("Kill process of PID %d\n",p);
}
else
{
i++;
}
}
}
Dans la méthode de la boucle, ma condition est
void loop(char *input)
{
bool flag=true;
char **tokens;
struct process **ptr=(struct process*) malloc (BUFFERSIZE);//Is the array that contains pointers to all the processes created.
int ci=0;int i=0;
while(flag==true)
{
input=getInp(input);
tokens=tokenize(input);
if(strcasecmp(*tokens,"kill")==0)
{
strtok(tokens[1],"\n");
char* pid=(char*)malloc (BUFFERSIZE);
pid=tokens[1];
printf("%s",pid);
killbyPIDprocess(ptr, pid);
}
}
La méthode d'entrée prend juste entrée de l'utilisateur. La méthode tokenize utilise la méthode strtok pour marquer l'entrée. Si je saisis kill (PID), il va à la méthode killbyPIDprocess (ptr, pid) où ptr est le double pointeur contenant tous les pointeurs des processus de struct. Je stocke les informations sur les processus lorsque j'en crée un. Le pid que j'imprime dans la méthode loop est le même que celui de l'entrée que je lui donne, c'est-à-dire le pid que je veux tuer, mais quand je passe ce pid à travers la méthode killbyPIDprocess, il montre une autre valeur. Je n'ai pas encore commencé à travailler sur le code de mise à mort, car il continuait à me donner des erreurs. J'ai utilisé des instructions d'impression pour garder une trace de la quantité de mon code fonctionnait. Je suis relativement nouveau à C et autodidacte donc s'il vous plaît signaler les erreurs.
Et cela n'a pas d'importance si j'utilise * p ou p dans le killbyPIDprocess(). p montre la valeur de la poubelle – Sobiaa