in C 我想重定向一個進程的輸出從stdout寫入到一個「共享內存段」,它可以被認爲是一個字符數組或一個指針字符串
我知道有dup2但它將文件描述符作爲參數,而不是指向數組的指針。有沒有辦法將它重定向到一個字符串?將輸出從stdout重定向到一個字符串?
4
A
回答
4
char string[SIZE];
freopen("/dev/null", "a", stdout);
setbuf(stdout, string);
看到它們的定義
0
0
0
爲了做標準輸出的一個簡單的重定向到一個存儲串的緩衝到管道的例子,只是這樣做:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define PATH_MAX 1000
int main()
{
FILE *fp;
int status;
char path[PATH_MAX];
fp = popen("ls ", "r");
if (fp == NULL) return 0;
while (fgets(path, PATH_MAX, fp) != NULL)
printf("\nTest=> %s", path);
status = pclose(fp);
}
1
這應該在UNIX系統上運行:
// set buffer size, SIZE
SIZE = 255;
char buffer[SIZE];
freopen("/dev/null", "a", stdout);
setbuf(stdout, buffer);
printf("This will be stored in the buffer");
freopen ("/dev/tty", "a", stdout);
相關問題
- 1. 將stdout輸出重定向到其中一個串口
- 2. Tcl輸出從stdout重定向到一個文件
- 3. 重定向線程的輸出到一個字符串在Python
- 4. 將stdout重定向到Java中的字符串
- 5. 如何暫時將printf輸出重定向到c字符串?
- 6. 將控制檯輸出重定向到java中的字符串
- 7. python - 打印到stdout並將輸出重定向到文件
- 8. Python。將stdout重定向到套接字
- 9. 將stdout重定向到套接字
- 10. 如何將stdout輸出重定向到新的Vim選項卡?
- 11. PERL無法將stdout和stderr重定向到輸出文件
- 12. 將硬編碼的程序輸出重定向到stdout?
- 13. 如何將cron作業輸出重定向到stdout
- 14. JRuby:將stdout重定向到StringWriter會產生空輸出
- 15. 重定向stdout和stderr的輸出?
- 16. stdout重定向改變輸出
- 17. 在cpp中重定向stdout輸出
- 18. 將標準輸出從進程(msxsl.exe)重定向到VB.NET中的字符串
- 19. 將slf4j重定向到字符串
- 20. 將字符串重定向到scala.sys.process
- 21. stdout/stderr元組或字符串輸出
- 22. 將Mathematica腳本的輸出重定向到PIPE而不是stdout使用subprocess.Popen產生空字符串
- 23. 將查詢字符串重定向到另一個查詢字符串
- 24. 如何系統調用輸出重定向到一個字符串
- 25. 如何標準輸出重定向到一個字符串在ANSI C
- 26. 將MATLAB的disp重定向到一個文本字符串
- 27. 將cin重定向到一個字符串
- 28. 將stdout重定向到Visual Studio輸出窗口從本地C++ dll
- 29. 將stdout捕獲到一個字符串並將其輸出回標準輸出C
- 30. 將cout和stdout重定向到C++中的字符串進行單元測試
請注意,緩衝區大小必須完全以字節爲單位「BUFSIZ」!如果它更小,則會有緩衝區溢出漏洞,如果它更大,它將永遠不會被使用。如果您想緩衝超過BUFSIZ字節,此解決方案將不起作用。 –
如何撤消這個?它需要撤消它嗎? – kangear