我有一個父進程和n個等待從網絡接收信息的子進程。事情是,從網絡接收到的每個消息我都需要告訴父親消息包含了什麼。如果我嘗試在父親和孩子之間製作一個管道或一個套接字,然後父親不知道信息在哪裏結束,另一個在哪裏開始。你能幫忙嗎?linux fork通信
1
A
回答
2
您正在使用面向流的管道/插座對之前socketpair使用一些分隔符。所以你失去了消息的界限。
使用面向數據報的套接字來保留消息邊界。
有關基於數據報的unix套接字和套接字對的更多信息,請參閱mapage unix(7)。
有可能對你適合的功能:
socket(AF_UNIX, SOCK_DGRAM, 0);
socketpair(AF_UNIX, SOCK_DGRAM, 0, int *sv);
1
之前寫入管道或讓每一個孩子補充說,分隔符的消息發送給父親
相關問題
- 1. fork()和在Linux
- 2. Fork()linux問題
- 3. linux fork socketpair sock_dgram
- 4. fork,execlp在Linux中
- 5. linux中fork()函數
- 6. Linux BlueZ dbus通信
- 7. linux fork()進程問題
- 8. Linux的fork()的命令
- 9. C/C++ linux fork()和exec()
- 10. C++,linux,fork,execvp,waitpid和SIGTSP
- 11. Linux Fork進程終止
- 12. Linux - 與RS485串行通信
- 13. Posix線程通信Linux
- 14. Linux中fork()的名稱的含義
- 15. C++調用linux命令fork childs
- 16. C靜態變量和linux fork
- 17. linux中的fork()系統調用
- 18. 使用execl和fork創建linux環境()
- 19. fork(),pipe()和exec()進程創建和通信
- 20. 進程間通信fork() - 定時等待()和/或睡眠()
- 21. Pipe,Fork和Exec - 父子進程之間的雙向通信
- 22. fork()內fork()
- 23. 在C中使用fork管道兩次使用linux linux
- 24. 如何通過fork和exec
- 25. Linux程序之間的通信
- 26. linux和windows之間的串行通信
- 27. 串行通信重置/ etc/profile(linux)
- 28. 與設備通信的Linux程序
- 29. Linux,應用程序之間的通信
- 30. Linux中管道之間的通信
看一看IPC(InterProcessCommunication)。有很多可能性(共享mem,管道......)。 – Burkhard
你是什麼意思,「不知道消息在哪裏結束,又在哪裏開始」?你能否詳細說明一下? –
您需要爲發送消息定義自己的協議。 –