如果我有一個包含文件數據的緩衝區,如何從中獲取文件描述符? 這是一個來自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. 如何從內核模塊中的文件描述符獲取文件名?
- 3. 如何在BufferedWriter中獲取緩衝區
- 4. 如何從python中的下載url獲取文件描述符?
- 5. 如何從文件描述符中獲取FILE *流?
- 6. 在Python中獲取文件描述符的位置
- 7. 讀取緩衝區中的* .wav文件
- 8. 如何獲取字符串/緩衝區的字符集?
- 9. 在緩衝區中存儲內容
- 10. C:讀取二進制文件到內存,更改緩衝區,寫入緩衝區到文件
- 11. 比較內存緩衝區
- 12. 如何從內存緩衝區中讀取C++
- 13. 如何在Javascript中獲取SelectItem描述
- 14. 實現istream獲取字符緩衝區?
- 15. 每個Unix文件描述是否都有自己的讀/寫緩衝區?
- 16. 如何獲取Hapijs中原始請求正文的緩衝區?
- 17. HDF5:「文件緩衝區」和「文件緩存」有什麼區別?
- 18. 如何在Django的會話中共享內存緩衝區?
- 19. 衝出緩衝區中的文件
- 20. 在swi-prolog中將文本寫入內存中的緩衝區?
- 21. 如何將套接字文件描述符放入緩衝區並繼續接受傳入連接?
- 22. 在R中,如何繪製到內存緩衝區而不是文件?
- 23. 在小冊子中獲取緩衝區內的點
- 24. SQL Server緩衝區緩存內容
- 25. 從文件描述符獲取文件指針
- 26. 讀取二進制文件,Linux緩衝區緩存
- 27. 如何在主程序中獲取imageview內容描述
- 28. 如何在緩衝區中的數據複製到某處內存(字符*)
- 29. 如何從文件夾加載文件到內存流緩衝區
- 30. MPI內部緩衝區內存問題
不錯。作爲一個適度的增強,你可以使用['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