Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Oct 2002 00:07:54 +0800
From:      Leslie Jackson <int@softhome.net>
To:        freebsd-hackers@freebsd.org
Subject:   [About SA_SIGINFO] Getting signal sender's PID and RUID
Message-ID:  <20021027000754.064fbe11.int@softhome.net>

next in thread | raw e-mail | index | archive | help
I tried to use sigaction(with SA_SIGINFO sa_flags sepecified) to obtain the
catched signal's sending process ID and its real user ID. But all that i got
are both zeros.

Flatform: FreeBSD 4.6-Release on x86.

----------------------------------8<------------------------------------------
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

static void sig_usr1(int, siginfo_t *, void *);

int main(void)
{
	struct sigaction	act;

	memset(&act, 0, sizeof(act));
	act.sa_flags = SA_SIGINFO;
	act.sa_sigaction = sig_usr1;

	if (sigaction(SIGUSR1, &act, NULL) < 0) {
		perror("sigaction error");
		exit(1);
	}
	
	sleep(3);
	kill(getpid(), SIGUSR1);

	return 0;
}

static void sig_usr1(int signo, siginfo_t *info, void *ptr)
{
	printf("Got SIGUSR1\n");
	printf("sending process ID: %d\n", info->si_pid);
	printf("sending process real user ID: %d\n", info->si_uid);
}
----------------------------------8<------------------------------------------

Anything i've missed? Are there any alternative ways?

Any insights would be appreciated. TIA. :-)

-- 
Leslie Jackson

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021027000754.064fbe11.int>