signal/sigaction을 통해 인자를 전달하는 방법 없나요?

10
points
points
리눅스 프로그램 중입니다.
signal이나 sigaction을 이용해서 이벤트가 발생하면 지정한 액션을 하도록 할 수 있다고 책에 나와있군요. (오늘 첨 봤음 ^&^) 그런데 이때 실행되는 함수에 전달되는 인자는 시그널 번호뿐이군요. 뭔가 다른 인자를 전달하고 싶은데 방법이 없는지요? 물론 전역변수는 가능하겠지만 이거 말고 인자를 전달하는 방법이 궁금합니다.

points
[RE]
일단은 없다고 봐야 합니다.
시그널 핸들러 자체가 이미 원형이 정해진 상태이기 때문에 그 원형을 마음대로 바꾸려면 결국은 커널까지 건드려야죠.
하지만 편법으로 시그널 핸들러에 인자를 전달하는 방법이 있긴 합니다.
말씀하신대로 전역변수를 사용한다던지 하는 방식으로 말이죠.
저같은 경우는 시그널을 보내기 전에 메세지큐에 인자로 사용될 값들을 넣어두고 시그널을 보내고, 시그널을 받는 쪽에서는 시그널 핸들러 안에서 메세지큐에 있는 값을 읽어와 사용하는 방식을 사용합니다.