Ioctl của bạn trên /devices/pseudo/[email protected]:poll
thiết bị (hoặc /dev/pool
) dường như được xử lý bởi hàm nhân từ tệp common / io / devpoll.c (bản sao trực tuyến - http://fxr.watson.org/fxr/source/common/io/devpoll.c?v=OPENSOLARIS
)
Chính xác hơn, bởi dpioctl
chức năng:
692 dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp)
zhihuifan, sau khi kiểm tra stacktrace của bạn, tôi thấy rằng chương trình của bạn đã được thực thi:
main() -> ... nteveque() -> ioctl()
Sau đó, tín hiệu hanlder được gọi .. Tôi không thấy gửi tín hiệu từ dpioctl, vì vậy tôi nghĩ rằng tín hiệu đã được gửi bởi một số chức năng bên ngoài (hoặc chương trình hoặc bởi người dùng):
--- called from signal handler with signal 0 (SIGEXIT) ---
Sau đó, trình xử lý tín hiệu không gian người dùng được gọi là:
sigacthandler -> call_user_handler -> __sighndlr
-> sslsstehdlr
sslsstehdlr
đã thực hiện nhiều hành động và theo hiểu biết của tôi và các tiêu chuẩn POSIX ( "2.4 Khái niệm tín hiệu "
từ Thông số kỹ thuật cơ sở nhóm mở Số 6; IEEE Std 1003.1, 2004 Edition), bộ xử lý tín hiệu chỉ có thể gọi (trực tiếp hoặc gián tiếp) các hàm được liệt kê trong bảng
... danh sách khổng lồ nhưng không có ptherad_sigmask
đây ...