система freeBSD 6.0.Ставлю обработчик сигналов на определенный сигнал. При посылке сигнала приложению - прилож. просто вываливается =(.
На linux 2.4, 2.6 все супер.
Блин, как меня за!"№;;% freeBSD!!
Какой сигнал? Кусок кода в студию?
>Блин, как меня за!"№;;% freeBSD!!Ты даже не представляешь как ты ее з%%%пал своей криворукостью.
ps: лично жаловалась!!!
>ps: лично жаловалась!!!У всех свои тараканы ;) По моим наблюдениям, у FreeBSD'шной реализации pthreads их многовато. Хотя все более менее описаны, но кто на самом деле читает эти мануалы? :)
>>ps: лично жаловалась!!!
>
>У всех свои тараканы ;) По моим наблюдениям, у FreeBSD'шной реализации pthreads
>их многовато. Хотя все более менее описаны, но кто на самом
>деле читает эти мануалы? :)О! Раз уж пошла такая каша. А не доводилось тестировать Solaris pthreads?! По идеи, в ней они должны отличаться "наибольшим умом и сообразительностью" (утрировано, из мультфильма).
>О! Раз уж пошла такая каша. А не доводилось тестировать Solaris pthreads?!
>По идеи, в ней они должны отличаться "наибольшим умом и сообразительностью"
>(утрировано, из мультфильма).Мне понравились. Всё очень аккуратно, совершенно предсказуемо, практически всегда "неописанное" поведение соответствовало моим ожиданиям :). В сочетании со свежей версией GDB - легко отлаживается. Всё гонялось для 8-ки и 9-ки под x86, для 6-ки (сиречь 2.6) под SPARC.
Впрочем, я работал с pthread'ами и на других коммерческих UNIX'ах (HP-UX, Tru64 UNIX). В целом если и похуже, то не сильно. Солидный вендор если берётся за реализацию стандарта, то у него всё очень аккуратно получается ;)
>Мне понравились. Всё очень аккуратно, совершенно предсказуемо, практически всегда "неописанное" поведение соответствовало
>моим ожиданиям :). В сочетании со свежей версией GDB - легко
>отлаживается. Всё гонялось для 8-ки и 9-ки под x86, для 6-ки
>(сиречь 2.6) под SPARC.
>
>Впрочем, я работал с pthread'ами и на других коммерческих UNIX'ах (HP-UX, Tru64
>UNIX). В целом если и похуже, то не сильно. Солидный вендор
>если берётся за реализацию стандарта, то у него всё очень аккуратно
>получается ;)Спасибо за ценную информацию!
>>Ты даже не представляешь как ты ее з%%%пал своей криворукостью.тогда ответьте на вопос - почему в линухе работает нормально? и почему в разных версиях той же фрихи работает по разному, к тому же неправильно =(
Вот код:
#include ......
void
gracefulStop(int a, siginfo_t *b, void *c)
{
std::Cout << "stopping!! =)";
/*
clocing threads
*/
exit(0);}
int
main(int argc,
char **argv)
{
struct sigaction act;
act.sa_sigaction = &gracefulStop;
act.sa_flags = SA_SIGINFO|SA_NODEFER;
if (sigaction(1,&act,NULL)==-1)
return false;while (true)
{
/*
operations with socket in thread! ->
creating thread for task and connects somewhere....
*/
}
}Вот приблизительно в таком коде - просто вырубается, никак не реагируя на сигнал, как буд-то не стоит обработчика =(
>>>Ты даже не представляешь как ты ее з%%%пал своей криворукостью.
>
>тогда ответьте на вопос - почему в линухе работает нормально? и почему
>в разных версиях той же фрихи работает по разному, к томуУ меня работает, что я делаю _не_ так?!
> cat signal.c
#include <signal.h>
#include <stdio.h>void
gracefulStop(int a, siginfo_t *b, void *c)
{
printf("stop!\n");
exit(0);
}
int
main(int argc, char **argv)
{
struct sigaction act;
act.sa_sigaction = &gracefulStop;
act.sa_flags = SA_SIGINFO|SA_NODEFER;printf("i'm %d\n", getpid());
if (sigaction(1, &act, NULL) < 0)
return 1;while (1)
{
sleep(1);
}
return 0;
}
> ./a.out &
[1] 863
> i'm 863
kill -1 863
stop!
[1] Done ./a.out
>
так напиши
std::Cout << "stopping!! =)\n";
так напиши
std::cout << "stopping!! =)\n";