[devel] system(3) blocks alarm(2) under strace(1)

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Июн 23 12:39:37 MSD 2004


Столкнулся в перле, но воспроизводится без всякого перла.

$ gcc alarm.c
$ ./a.out
diff=3 seconds
$ strace -o /dev/null ./a.out
diff=3 seconds
$ strace -f -o /dev/null ./a.out
diff=6 seconds
$

В чем здесь секрет?
----------- следующая часть -----------
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <time.h>

time_t start_time, alarm_time;

void alarm_handler(int signo)
{
	alarm_time = time(NULL);
}

int main()
{
	start_time = time(NULL);
	signal(SIGALRM, alarm_handler);
	alarm(3);
	system("sleep 6");
	printf("diff=%d seconds\n", alarm_time - start_time);
	return 0;
}
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20040623/298d1077/attachment-0001.bin>


Подробная информация о списке рассылки Devel