我可以在c中創建一個匿名流嗎?我不想在文件系統上創建一個新文件,只需要一個函數可以寫入的數據流,而另一個函數可以從中讀取數據。不是C++,c。c中的匿名流
Q
c中的匿名流
1
A
回答
6
也許您正在尋找管道。
將標準輸出轉發到管道。
然後另一個應用程序將從管道中讀取。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#define RDR 0
#define WTR 1
char ** parseargs(char *string);
int main(void){
char mode = 'r';
char prog[50] = "/bin/ps --version";
char **argv;
int p[2];
pid_t pid;
FILE *readpipe;
int pipein, pipeout;
char buf;
/* create the pipe */
if(pipe(p) != 0){
fprintf(stderr, "error: could not open pipe\n");
}
pipein = p[RDR];
pipeout = p[WTR];
if((pid = fork()) == (pid_t) 0){
close(pipein);
dup2(pipeout, 1);
close(pipeout);
if(execv(argv[0], argv) == -1){
fprintf(stderr, "error: failed to execute %s\n", argv[0]);
}
_exit(1);
}
close(pipeout);
readpipe = fdopen(pipein, &mode);
while(!feof(readpipe)){
if(1 == fread(&buf, sizeof(char), 1, readpipe)){
fprintf(stdout, "%c", buf);
}
}
return 0;
}
0
哎呀,剛找到它......也許。 tmpfile()返回一個tmeporary文件*
這是正確的方法嗎?
1
0
如果你使用的是Unix(或者類似的操作系統),你可以閱讀Beej的Unix進程間通信指南(無論你的操作系統是什麼,它都是很好的閱讀)。
請在Beej's Guides查看。
在快速便知有沒有,我注意到一些事情你很可能有更多或更少的工作中使用(使用可選的創建文件/資源):
- 管道
- 的FIFO
- 消息隊列
- 共享內存段
- 內存映射文件
- Unix Sockets
相關問題
- 1. 匿名``中的流星Js`
- 2. C++中的匿名類
- 3. 匿名c類型的C++別名
- 4. 匿名類型C#
- 5. C# - 匿名委託
- 6. C#匿名類型
- 7. 匿名類型的C#List.Foreach
- 8. C中的遞歸和匿名方法#
- 9. lambda中的C#匿名函數
- 10. C#中的簡單匿名方法
- 11. 什麼是C#中的匿名方法?
- 12. C#2中的代表/匿名方法
- 13. WebAPI函數中的C#匿名函數?
- 14. Unity3D中的C#匿名函數示例
- 15. Printf在c中的匿名行爲
- 16. C#中的匿名變量用法?
- 17. C中的匿名內部類#
- 18. 什麼是C#中的匿名類型?
- 19. C#中的YouTube API匿名者#
- 20. C#來自循環的匿名對象匿名數組
- 21. 如何使用具有匿名結構的匿名C++聯合
- 22. Mongo C#流利聚集管道組匿名類型鍵異常
- 23. C#匿名元組列表
- 24. C#4.0匿名函數
- 25. C++匿名類初始化
- 26. C#JSON匿名系列化
- 27. C#匿名函數範圍
- 28. C#匿名類型聲明
- 29. c#匿名類型問題
- 30. 匿名類型c#排序
這仍然會創建一個文件... – 2009-10-05 14:13:10