Estou a implementar uma shell e um outro script a que chamo de monitor. Estes dois scripts partilham uma zona de memoria partilhada, na qual a shell insere o PID do processo correspondente a novo comando inserido na shell. O script monitor acede a zona de memoria partilhada obtem o PiD. Ate aqui tudo funciona. O meu problema consiste em fazer a chamada da função waitpid para terminar o processo que foi criado pela shell. Fazer a chamada waitpid do lado do monitor é uma restrição do trabalho que estou a desenvolver.
shared_mem = (char*) shmat(segment_key,0,0);
pid = atoi(shared_mem);
shmdt(shared_mem);
waitpid(pid,&status,0);
esta solução não funciona. Continuo a ter processos defuncts. Tentei também esta solução, não sei se é possivel fazer isto:
shared_mem = (char*) shmat(segment_key,0,0);
pid = atoi(shared_mem);
shmdt(shared_mem);
printf("pid %d\n",pid);
printf("status %d\n",status);
s = getpgrp();
//adicionar o processo ao grupo do monitor
int setpgid(pid_t pid, pid_t s);
waitpid(pid,&status,0);
Gostaria de saber como faço para chamar a função waitpid fora do processo pai. Pois é o script monitor o responsavel por saber o status do processo.
Pergunta
zaraki
Ola a todos.
A minha duvida consiste no seguinte:
Estou a implementar uma shell e um outro script a que chamo de monitor. Estes dois scripts partilham uma zona de memoria partilhada, na qual a shell insere o PID do processo correspondente a novo comando inserido na shell. O script monitor acede a zona de memoria partilhada obtem o PiD. Ate aqui tudo funciona. O meu problema consiste em fazer a chamada da função waitpid para terminar o processo que foi criado pela shell. Fazer a chamada waitpid do lado do monitor é uma restrição do trabalho que estou a desenvolver.
Gostaria de saber como faço para chamar a função waitpid fora do processo pai. Pois é o script monitor o responsavel por saber o status do processo.
Obrigado
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.