例如,假設我有一個文件server.c,它不打印任何東西,但是有一個字符串,例如:「魚在空中游泳」。我想要做的是讓child.c打印server.c的字符串 甚至可能嗎?我被告知使用管道(如popen())會有所幫助。但我找不到我想要的東西。如何從另一個c文件輸入輸出?
回答
我敢肯定有可能使用管道功能(檢查像這個網站unixwiz.net/techtips/remap-pip-fds.html這樣的東西),但你描述的聲音像另一個客戶端連接到服務器並通過套接字將字符串發送給它。使用套接字還會打開通過網絡檢查服務器字符串的功能。通常,在服務器進行錯誤/額外日誌檢查時,服務器可以通過打開日誌文件或通過套接字發送日誌文件來處理。如果安全問題存在,您可以決定將其發送給通過TLS連接使用PSK的特定客戶端。
對於TLS例子檢查出https://github.com/wolfSSL/wolfssl-examples
添加在代碼用於輸送
receiver.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4
5 int main() {
6
7 char buffer[1024];
8
9 fscanf(stdin, "%s", buffer);
10
11 printf("receiver got data and is printing it\n");
12 printf("%s\n", buffer);
13
14 return 0;
15 }
sender.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4
5
6 int main()
7 {
8 FILE *output;
9
10 output = popen ("./receiver","w");
11 if (!output) {
12 /* error checking opening pipe */
13 fprintf(stderr, "could not open pipe\n");
14 return 1;
15 }
16
17 fprintf(output, "%s", "hello_world\n");
18
19 if (pclose (output) != 0) {
20 /* error checking on closing pipe */
21 fprintf(stderr, " could not run receiver\n");
22 return 1;
23 }
24
25 return 0;
26 }
編譯和在同一目錄中運行使用
gcc sender.c -o sender
gcc receiver.c -o receiver
./sender
哇,這聽起來很複雜。但是你是對的,客戶端將連接到服務器以從服務器獲取字符串並將其打印出來。我想知道是否可以使用流水線而不是通過TLS連接來完成這項工作? 如果我確實想通過TLS連接進行操作,那麼您是否有任何建議的參考?謝謝! – 2015-03-31 11:11:14
嗨終極TC,編輯答案,希望它有幫助。我仍然建議使用TLS(如果擔心安全性),或者至少使用純TCP連接並通過套接字發送字符串。 – Sweetness 2015-03-31 21:20:57
如果擔心安全問題,首先要擺脫的是receiver.c中第9行的緩衝區溢出漏洞。 – 5gon12eder 2015-03-31 21:23:29
- 1. 文件輸入輸出C++
- 2. C文件輸入&輸出
- 3. 從另一個文件輸入
- 4. 插入文件從另一個輸入輸入
- 5. Maven插件;使用一個輸出作爲另一個輸入
- 6. 如何從另一個PHP文件獲取輸入值?
- 7. 從另一個輸入
- 8. 如何在一個XSLT文件中包含另一個輸出?
- 9. C的文件輸入/輸出功能
- 10. 在C++中輸入/輸出文件
- 11. 如何將一個腳本的輸出文件作爲另一個腳本的輸入文件?
- 12. 如何從一個文件C++和輸出閱讀
- 13. Pinvoke CreateProcess從文件輸入/輸出
- 14. 從一個輸入動態生成值到另一個輸入
- 15. C:從一個文件讀取,排序,然後輸出到另一個
- 16. 如何使用Jquery從另一個文件中分配文件輸入值?
- 17. C++文件輸入和輸出:無法輸入
- 18. 輸入一個文本文件,並在Python中寫入多個輸出文件
- 19. 輸入/輸出文件名
- 20. 文件輸入和輸出
- 21. 輸入和輸出文件
- 22. Python輸入/輸出,文件
- 23. 文件輸入輸出
- 24. PHP - 解析一個CSV文件,並寫入輸出到另一個CSV文件
- 25. 如何使一個子進程使用另一個終端輸入和輸出?
- 26. 如何從pyinstaller的輸出文件創建一個.app文件?
- 27. 在使用sed輸入另一個文件的第一行之前從文本文件輸入文本
- 28. fstream的閱讀從一個文件中的數字輸出,並且輸出總和到另一個文件
- 29. 輸入元素不同於輸出元素從文件C++
- 30. 如何從輸入文件輸出值的所有索引
我想你的意思是「我怎樣才能把另一個程序的輸出作爲我的輸入?」如果不是,那麼我不明白你在問什麼 – 2015-03-31 01:18:02
目前還不清楚你要求什麼,但是如果你試圖將輸出從一個程序輸入到另一個程序,爲什麼不使用[pipe](http: //en.wikipedia.org/wiki/Pipeline_%28Unix%29),就像在命令行上管道數據時一樣,例如'ls -la | more'。 – 2015-03-31 01:29:22
@AjjandroDiaz是的,這就是我的意思!啊哈,對不起,我的大腦由於閱讀了許多關於C. – 2015-03-31 11:07:03