10
A
回答
21
的安全的方法是使用snprintf
和strtol
。
但是,如果您知道這兩個進程是使用相同版本的編譯器創建的(例如,它們是與編譯版本相同的可執行文件),則可以利用C中的任何內容都可以讀取或寫入的char
數組:
int n = something();
write(pipe_w, &n, sizeof(n));
int n;
read(pipe_r, &n, sizeof(n));
1
要麼發送包含的整數例如,12345679
ASCII表示的字符串,或發送包含INT的二進制表示,例如,0x00
,0xbc
,0x61
,0x4f
四個字節。
在第一種情況下,您將使用諸如atoi()
之類的函數來取回整數。
0
Aschelpler的答案是對的,但如果這種情況稍後會增長,我建議您使用Google的Protocol Buffers之類的簡單協議庫,或者僅使用JSON或帶有一些基本模式的XML。
-2
下面一個用於寫入管道,並從管道讀取爲正常工作:
stop_daemon =123;
res = write(cli_pipe_fd_wr, &stop_daemon, sizeof(stop_daemon));
....
res = read(pipe_fd_rd, buffer, sizeof(int));
memcpy(&stop_daemon,buffer,sizeof(int));
printf("CLI process read from res:%d status:%d\n", res, stop_daemon);
輸出:
CLI process read from res:4 status:123
相關問題
- 1. 使用命名管道在兩個進程之間發送字符串
- 2. 如何在Guile中的兩個進程之間創建管道?
- 3. 使用管道在線程之間發送數據
- 4. 如何使用TUN/TAP接口在兩個進程之間發送數據包?
- 5. 兩個子進程與管道之間進行通信
- 6. 使用fork在兩個進程之間發送char字符char
- 7. 使用命名管道發送兩個程序之間的字符串
- 8. 如何在C#中的兩個程序之間發送數據?
- 9. 如何在Python中的兩個程序之間發送數據?
- 10. 如何在Win32中的兩個子進程之間設置管道?
- 11. Linux:使用管道在進程間發送信息
- 12. Node.js中的兩個子進程之間的管道?
- 13. 不能在兩個進程之間發送消息馬赫
- 14. 發送浮動過程之間的點值與管道用C
- 15. 如何在兩個C程序之間發送變量
- 16. 如何在兩個線程之間發送中斷或信號?
- 17. 在兩個進程之間使用命名管道連續通信
- 18. 使用管道在子進程之間傳遞數據C
- 19. 進程與管道之間的通信
- 20. 如何在兩個Arduinos之間發送互聯網數據包?
- 21. 使用管道在兩個匿名python腳本之間進行數據通信
- 22. 兩個子進程之間發送信號
- 23. 如何在子進程和父進程之間傳遞整數
- 24. 在調整之間發送數據
- 25. 在兩個C#程序之間發送大量數據
- 26. 兩個控制檯應用程序之間的管道?
- 27. 使用兩個管道的雙向進程間通信
- 28. 如何使用兩條管道用管父母和孩子之間發送消息父/子之間發送消息
- 29. VC++發送消息在兩個應用程序之間
- 30. 在兩個應用程序之間發送消息
每個指針可以澆鑄爲*字符。但我不確定相反是否正確,而不違反嚴格的別名規則? – 2011-03-08 19:14:24
@cebewee:不確定你的問題到底是什麼。 '(short *)(char *)&n'將在解除引用時違反嚴格的別名。但'short first_two_bytes; memcpy(&first_two_bytes,&n,sizeof(first_two_bytes));'不違反嚴格的別名。 – aschepler 2011-03-08 19:20:53
@cebewee - 它不是char *,它是void *。每個指針都可以是一個void *。雖然你可能還是對的。這可能會違反嚴格的別名規則,第二種情況下'n'的值可能不會改變。 – Omnifarious 2011-03-08 19:21:33