Liên lạc bằng cơ chế pipe

Tình hình là em đang làm bài tập lớn hdh , nhưng khi tìm hiểu về cơ chế liên lạc bằng pipe này thì đa số đều trên Linux, còn trong MSDN thì là về liên lạc giữa 2 process (server & client) . Vậy các bác cho e hỏi là :
_ code trên Linux với trên Windows có khác nhau k ( tài liều bên Bk cũng toàn trên Linux- còn trường mình thì chỉ giảng sơ qua lí thuyết nên e k biết code thế nào )
_ trong 1 chương trình có 2 tiểu trình thì liên lạc giữa 2 tiểu trình (thread) đó = pipe ntn ( vì trên mạng toàn thấy process thui )
Cho em xin code minh họa luôn nhé
Thanks so much!!!
hihihehe_nhoc2_85.gif
hihihehe_nhoc2_62.gif
hihihehe_nhoc2_63.gif
hihihehe_nhoc2_07.gif
hihihehe_nhoc2_46.gif

Windows không có pipe mà nó xài từ bus - message bus, search thử xem.

Còn thread thì nó xài chung vùng nhớ của process mà liên lạc chứ nó cần gì pipe nữa nên người ta không đề cập.

Còn cái liên lạc bằng shared memory thì sao anh… e hok hiểu rõ mấy cái này lắm. Cơ chế của nó là gì ấy…

Shared memory là chia sẽ chung 1 vùng nhớ …

Đầu tiên thì cần 1 Process tạo ra vùng nhớ chia sẽ đó sử dụng hàm dưới


HANDLE WINAPI CreateFileMapping(
  __in          HANDLE hFile,
  __in          LPSECURITY_ATTRIBUTES lpAttributes,
  __in          DWORD flProtect,
  __in          DWORD dwMaximumSizeHigh,
  __in          DWORD dwMaximumSizeLow,
  __in          LPCTSTR lpName

Sau đó ta phải tạo 1 con trỏ View tới vùng nhớ đã tạo ở trên. Con trỏ này dùng để đọc hay ghi vào vùng nhớ đó


LPVOID WINAPI MapViewOfFile(
  __in          HANDLE hFileMappingObject,
  __in          DWORD dwDesiredAccess,
  __in          DWORD dwFileOffsetHigh,
  __in          DWORD dwFileOffsetLow,
  __in          SIZE_T dwNumberOfBytesToMap
);

Sau đó dùng hàm CopyMemory(…) để ghi vào hay đọc từ vùng nhớ đó …

Tiếp theo là tiến trình thứ 2 đọc từ cái vùng nhớ đã dc tạo ra ở trên … cấu trúc cũng tương tự…
nhưng khác là sử dụng hàm OpenFileMapping thay vì CreateFileMapping như ở trên

[QUOTE=07520004;29017]Windows không có pipe mà nó xài từ bus - message bus, search thử xem.

Còn thread thì nó xài chung vùng nhớ của process mà liên lạc chứ nó cần gì pipe nữa nên người ta không đề cập.[/QUOTE]
nhưng đề chính xác là:

Viết chương trình gồm 2 tiến trình. Tiến trình A đọc 1 dãy số từ 1 file, sau đó gửi dãy số nguyên này cho tiến trình B thông qua cơ chế pipe. Tiến trình B nhận xong dữ liệu …

_ có thể là viết 2 chương trình liên lạc với nhau kiểu Server client.

Windows không có pipe mà nó xài từ bus - message bus, search thử xem.

_ Ý em là lập trình C++ trong môi trường Windows với môi trường Linux/UNIX có khác gì k (vì em thấy trong mấy tài liệu có 1 số câu lệnh thực hiện trong 2 môi trường khác nhau là không giống nhau- không biết có phải k nữa ~~’ ).

[QUOTE=10520253;29045]_ Ý em là lập trình C++ trong môi trường Windows với môi trường Linux/UNIX có khác gì k (vì em thấy trong mấy tài liệu có 1 số câu lệnh thực hiện trong 2 môi trường khác nhau là không giống nhau- không biết có phải k nữa ~~’ ).[/QUOTE]

Các hàm chuẩn của C++ được định nghĩa trong chuẩn C-0x thì như nhau, các thức còn lại là khác. Và giao tiếp giữa các process chắc chắn là phải khác.

[QUOTE=10520253;29009]Tình hình là em đang làm bài tập lớn hdh , nhưng khi tìm hiểu về cơ chế liên lạc bằng pipe này thì đa số đều trên Linux, còn trong MSDN thì là về liên lạc giữa 2 process (server & client) . Vậy các bác cho e hỏi là :
_ code trên Linux với trên Windows có khác nhau k ( tài liều bên Bk cũng toàn trên Linux- còn trường mình thì chỉ giảng sơ qua lí thuyết nên e k biết code thế nào )
_ trong 1 chương trình có 2 tiểu trình thì liên lạc giữa 2 tiểu trình (thread) đó = pipe ntn ( vì trên mạng toàn thấy process thui )
Cho em xin code minh họa luôn nhé
Thanks so much!!! [/QUOTE]
Tham khảo trong đây nè bạn:
http://kythuatmaytinh.net/forum/threads/5187-Updating-Tong-hop-Source-Code.ce

[QUOTE=10520455;29050]Tham khảo trong đây nè bạn:
http://kythuatmaytinh.net/forum/threads/5187-Updating-Tong-hop-Source-Code.ce[/QUOTE]
cho mình hỏi các bạn dùng tài liệu nào mà có nhiều hàm khủng thế , nếu học bt trên lớp chắc chắc k có, share cho mình tài liệu với

OK có rồi trên MSDN quá trời mà mình k biết