如果我有一個包含文件數據的緩衝區,如何從中獲取文件描述符? 這是一個來自how to untar file in memory的問題如何在內存中獲取緩衝區的文件描述符?
13
A
回答
13
我寫了一個簡單的例子,如何使文件描述符到一個存儲區:
#include <unistd.h>
#include <stdio.h>
#include <string.h>
char buff[]="qwer\nasdf\n";
int main(){
int p[2]; pipe(p);
if(!fork()){
for(int buffsize=strlen(buff), len=0; buffsize>len;)
len+=write(p[1], buff+len, buffsize-len);
return 0;
}
close(p[1]);
FILE *f = fdopen(p[0], "r");
char buff[100];
while(fgets(buff,100,f)){
printf("from child: '%s'\n", buff);
}
puts("");
}
0
你不能。與C++不同,文件I/O的C模型不可擴展。
相關問題
- 1. 獲取與c + +的內存緩衝區
- 2. 獲取文件描述符在Perl
- 3. 如何在BufferedWriter中獲取緩衝區
- 4. 如何從內核模塊中的文件描述符獲取文件名?
- 5. 如何從python中的下載url獲取文件描述符?
- 6. 如何從文件描述符獲取文件名和路徑?
- 7. 如何從文件描述符中獲取FILE *流?
- 8. Linux內核中磁盤文件的I/O緩衝區緩存
- 9. 文件描述符和套接字文件描述符之間的區別
- 10. 什麼形式的socket文件描述符在內存中?
- 11. 如何獲取打開文件描述符的數量?
- 12. 讀取緩衝區中的* .wav文件
- 13. 在Python中獲取文件描述符的位置
- 14. 從Linux內核模塊的文件描述符中獲取文件名/路徑?
- 15. 逐行讀取文本文件並從緩衝區掃描 - C
- 16. 我如何從CollectionFS獲取文件(圖像)的緩衝區
- 17. 如何從gpuHog獲取描述符?
- 18. 在緩衝區中存儲內容
- 19. 如何獲取字符串/緩衝區的字符集?
- 20. 如何將內存寫入文件緩衝區進行變異?
- 21. 緩衝區內存分配
- 22. 比較內存緩衝區
- 23. C從文件描述符中讀取
- 24. C:讀取二進制文件到內存,更改緩衝區,寫入緩衝區到文件
- 25. 如何從內存緩衝區中讀取C++
- 26. 如何在Javascript中獲取SelectItem描述
- 27. OpenCV:如何將描述符存儲在文件中?
- 28. 實現istream獲取字符緩衝區?
- 29. 如何獲取列描述
- 30. 每個Unix文件描述是否都有自己的讀/寫緩衝區?
不錯。作爲一個適度的增強,你可以使用['fcntl(fd,F_SETPIPE_SZ,...)'](http://www.kernel.org/doc/man-pages/online/pages/man2/fcntl.2.html )來增加管道緩衝區大小。感謝[msandiford](http://stackoverflow.com/a/14129599/781723)。 – 2015-06-19 00:41:26
在Linux上,['vmsplice()'](http://man7.org/linux/man-pages/man2/vmsplice.2.html)可能是有用的:它避免了需要for循環來寫入數據到管道。 – 2015-06-19 00:59:28
這是一個非常棒的解決方案,但如果您需要能夠從fd(即seek)讀取更多內容,那麼這將不起作用。你不能在管道上尋找(至少不是在我使用的平臺上)。 – 2016-06-09 19:37:04