簡體   English   中英

為什么運算符>>不能與我的char設備一起使用?

[英]Why the operator >> doesn't work with my char device?

我目前正在學習linux設備驅動程序。 我從一個示例驅動程序開始,它只是一個內存緩沖區。

我的代碼可以在我的github上找到

我這樣做來測試我的驅動程序:

# echo "Hello World" > /dev/mad
# cat /dev/mad
Hello World

這進展順利,但是當我使用重定向運算符添加某些內容(>>)時,其行為並非我所期望的。

# echo foo > /dev/mad
# echo bar >> /dev/mad
# cat /dev/mad
bar

我希望有:

foo
bar

我已經實現了llseek回調,並在readwrite回調中處理了offp ,但仍然無法正常工作。

您需要在寫入例程中處理O_APPEND >>運算符使用O_APPEND標志打開文件,該標志要求您的驅動程序在每次寫操作之前搜索到結尾。 在您的情況下,您的mad_write例程應檢查文件標志,並在寫入之前(如果已設置O_APPEND話)查找結尾。

請參閱此處手冊定義 我以Linux內核源代碼為例,但實際上很少有字符驅動程序可以處理O_APPEND 我能找到的最佳示例是通用文件代碼

暫無
暫無

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

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