しかし、問題は、メソッドで送信する前に印刷するPIDと、メソッドで受け取った後に印刷するPIDが全く異なることです。これを理解できません。ループ法で私はPIDを使用してkillプロセスを作成しています
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は、structプロセスのすべてのポインタを含むダブルポインタです。私は1つを作成するプロセス情報を保存します。ループメソッドで印刷するpidは、入力したpidと同じです。つまり、処理を終了したいpidですが、このPIDをkillbyPIDprocessメソッドに渡すと、別の値が表示されます。私は実際に私がエラーを与え続けたので、まだキルコードに取り組み始めていません。私はprintステートメントを使って、コードのどれくらいが動作しているかを記録していました。私はCの方が比較的新しいので自己教えていますので、間違いを指摘してください。
killbyPIDprocess()で* pまたはpを使用しても問題ありません。 pはゴミ値を示します – Sobiaa