Jump to content
Ang3lo

Tratamento Sinais

Recommended Posts

Ang3lo

Boa tarde a todos,

Pessoal tenho um código que cria vários processos filhos e pretendia efectuar uma função de registar em ficheiro

quando o programa recebesse um KILL. Por questões de backup.

O que fiz foi no switch do fork(); meto o pai à espera da morte dos processos filhos e a função que supostamente espera por um sinal

default:
                signal(SIGKILL,handler);
                wait(NULL);

A função handler é a seguinte

void handler(int signal){
    puts("recebi um sigkill\n");
    //RegistaEstatisticasFicheiro();
}

Não percebo o porque de ao receber um SIGKILL não executa a função handler.

Alguém sabe o que estou a fazer mal?

Obrigado

Share this post


Link to post
Share on other sites
Ang3lo

Obrigado, é pena que não dê vou ter de fazer doutra maneira então.

Ja agora é possível passar um operador tipo < > por parâmetro para uma

função if?

Share this post


Link to post
Share on other sites
anolsi

Não podes enviar antes um SIGINT, ou um SIGTERM? Tem que ser mesmo o SIGKILL?


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites
Ang3lo

Não existem funções "if".

Apesar de teres razão acho que também é fácil compreender o que queria dizer.

anolsi

De facto acabei por optar por essas soluções mas não sabia era que não era possível tratar o sigkill,

Acabei por fazer como dissest e resultou :)

Share this post


Link to post
Share on other sites
Baderous

Se fosse fácil eu não tinha ficado na dúvida se queres passar o operador a um if ou a uma função em particular.

Share this post


Link to post
Share on other sites
Ang3lo

Nesse caso peço desculpa e explico melhor

O que se passa é o seguinte, eu tenho duas funções que sao exactamente iguais, tirando a condição

no if

em que numa é

if(valor1 > valor2){
....
}

e na outra é

if(valor1 < valor2){
....
}

De modo a não ter código repetido queria saber se é possível passar o operador < > por parâmetro para colocar no if.

Obrigado e desculpa a confusão

Share this post


Link to post
Share on other sites
brunoais

If não é uma função, é um comando de controlo (como o while, for, goto...)

Tenta isto:

if(valor1 < valor2 || valor1 > valor2){
....
}


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
KTachyon

Tenta isto:

if(valor1 < valor2 || valor1 > valor2){
....
}

Penso que não é essa a dúvida.

O que se passa é o seguinte, eu tenho duas funções que sao exactamente iguais, tirando a condição

no if

em que numa é

if(valor1 > valor2){
....
}

e na outra é

if(valor1 < valor2){
....
}

Esses valor1 e valor2 são parâmetros da função? Se sim, só precisas de uma função, trocas os parâmetros à entrada.

Se não, envias uma variável a mais que indica qual é a comparação a aplicar.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
brunoais

Se não, envias uma variável a mais que indica qual é a comparação a aplicar.

Ou então envia a função comparadora.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.