簡體   English   中英

如何在Linux的用戶空間庫中捕獲系統調用?

[英]How to trap system calls in a userspace library in Linux?

我需要在用戶空間中編寫linux設備驅動程序。

我如何編寫一個庫,當該庫鏈接到應用程序時,它可以處理對特定設備的系統調用。

應用程序應該能夠在諸如/dev/mydev0類的設備上使用open()read()write()ioctl() ,但是這些調用應該在用戶空間庫而不是內核模塊中終止。

請告知這是否可行以及如何實現。

Linux是單片內核 ,這通常意味着您所要求的是不可能的。 您不能在用戶模式下編寫任意驅動程序。

可以 (正如標題所暗示的那樣)使用ptrace(2) 捕獲系統調用,並將它們基本上重定向到庫中的函數。 但是,這不是一個簡單,直接的解決方案。

也可以看看:

FUSE (USErspace中的文件系統)可能是您想要的。 它是一種機制,允許通過用戶空間進程專門實現文件系統驅動程序。 例如,這就是sshfs實現方式。

資源:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM