30/09/2018, 18:49

Hỏi cách truyền dữ liệu từ parent process sang child process (1 chiều)

Ví dụ mình có Process A, dùng CreateProcess để bật Process B lên.

Mình muốn gửi dữ liệu từ A sang B, nhưng vấn đề là B không phải Process do mình lập trình ra, mà mình sẽ gọi Process B lên rồi inject DLL của mình vào đó, DLL của mình sẽ thêm code vào hàm main của B để bắt dữ liệu từ A.

Có các phương án mình có xem qua như dùng Argument trong commandline, Enviroment variables , Pipes, Shared Memory, Shared Section nhưng:

  • dùng argument trong commandline thì B khả năng sẽ lỗi do B cũng sử dụng argument, mà mình không hoàn toàn biết B chạy như thế nào.

  • dùng enviroment variables thì có khả năng sẽ fail vì size của enviroment block có hạn và có thể trùng tên với variable khác, mà tạo enviroment block mới thì B sẽ crash, hiện tại thì cách này mình dùng được, nhưng nếu làm trên máy nào mà nhiều enviroment variable quá thì khả năng là fail.

  • dùng pipe thì code bên B phải biết tên của pipe hoặc handle của pipe -> phải truyền name/handle qua -> quay lại vấn đề, mà cũng có thể trùng tên với pipe khác.

  • dùng shared memory -> vấn đề như pipe.

  • dùng shared section -> khả thi với 1 process con, nhưng với nhiều process con thì cực kỳ rắc rối.

Vậy có cách nào tiện lợi như enviroment variables nhưng không bị giới hạn về size, không cần handle, không sợ bị trùng tên không, C# hay C++ cũng được?

Bài liên quan
0