Но проблема заключается в том, что PID, который я печатаю перед отправкой через метод, и PID, который я печатаю после получения его в методе, полностью отличается. Я не могу понять это ,Я создаю процесс уничтожения с использованием 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++;
}
}
}
В методе контура, мое состояние
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);
}
}
Метод ввода только принимает данные от пользователя. Метод tokenize использует метод strtok для токенизации ввода. Если я вводим kill (PID), он переходит к методу killbyPIDprocess (ptr, pid), где ptr - это двойной указатель, содержащий все указатели структурных процессов. Я храню информацию о процессе, которую я создаю. Пид, который я печатаю в методе цикла, такой же, как и для ввода, который я ему даю, т.е. одного pid, с которым я хочу завершить свой процесс, но когда я передаю этот pid через метод killbyPIDprocess, он показывает другое значение. Я еще не начал работать над кодом kill, потому что он продолжал давать мне ошибки. Я использовал заявления печати, чтобы отслеживать, сколько из моего кода работает. Я относительно новичок в C и сам преподавал, поэтому, пожалуйста, указывайте на ошибки.
И не имеет значения, использую ли я * p или p в killbyPIDprocess(). p показывает значение мусора – Sobiaa