簡體   English   中英

如何與新進程共享信息(除了命令行參數)?

[英]How to share information with a new process (besides the command-line arguments)?

我正在開始一個新的過程:

process.Start();

我知道我可以使用以下方式將字符串傳遞給它:

process.StartInfo.Arguments = ...

但是我不僅要共享幾個簡單的字符串(字節數組等),還應該共享。我該怎么做?

編輯:這將作為ClickOnce應用程序安裝,所以我真的不知道它將在文件系統中安裝的位置,並且我想使它盡可能簡單,以便在卸載后不會保留任何文件。 那我該把數據放在哪里呢?

看一下內存映射文件 -它們使您可以在進程之間共享數據。

替代方法是常規文件,注冊表,通過套接字進行通信等。

如果數組很小,則可以對它進行base64編碼。 其他選項包括將數據保存到文件或使用命名管道

您可能要使用匿名管道

匿名管道提供的功能少於命名管道,但也需要較少的開銷。 您可以使用匿名管道來簡化本地計算機上的進程間通信。 您不能使用匿名管道通過網絡進行通信。

您可以創建一個臨時文件,將所有必需的數據寫入其中,然后將結果文件名作為命令行參數發送。 當第二個應用程序運行時,它將讀取文件的內容並將其刪除。

如果您可以正確編碼字節數組(例如base64),則可以重定向目標進程的stdin並通過它進行流傳輸:

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM