C++ 在另一个进程中运行可执行文件而不创建新进程

C++ 在另一个进程中运行可执行文件而不创建新进程,c++,c,windows,linux,C++,C,Windows,Linux,我想写一个程序,运行一个可执行的形象,而不创建一个新的进程。。。我想这样做是因为我想使用plink向远程ssh服务器发送密码 plink程序发送命令行中提供的密码。。如果我使用fork和exec函数,有人可以使用process explorer或ps-aef或cat/proc//cmdline查看命令行中提供的密码。。如何避免这个安全漏洞这个程序必须同时在linux和windows上运行 那么,为什么一开始就发送密码呢?使用密码加密一些文本+时间戳,然后发送给授权您自己 不,我不知道如何在不创建

我想写一个程序,运行一个可执行的形象,而不创建一个新的进程。。。我想这样做是因为我想使用plink向远程ssh服务器发送密码


plink程序发送命令行中提供的密码。。如果我使用fork和exec函数,有人可以使用process explorer或ps-aef或cat/proc//cmdline查看命令行中提供的密码。。如何避免这个安全漏洞这个程序必须同时在linux和windows上运行

那么,为什么一开始就发送密码呢?使用密码加密一些文本+时间戳,然后发送给授权您自己


不,我不知道如何在不创建新进程的情况下调用另一个程序。

如果您担心密码是可见的,您最好加密密码。加密密码对观察者来说没有什么价值,因此您可以使用诸如
exec()
fork()
大多数在命令行上接受密码的程序也通过文件、管道或环境变量接受密码。为什么不使用这些其他机制之一?

为了避免在可能“嗅探”密码的地方提示输入密码或使用纯文本密码,您几乎可以肯定地设置公钥身份验证(假设您绑定到plink…)


使用管道也是一个很好的解决方案。

将SSH服务器设置为使用RSA公钥/私钥身份验证而不是密码。总之,对于SSH来说,这通常是一个更好的选择。请参阅。

我找到了一个可以满足您需要的,主要是等待plink的STDOUT上的密码提示,然后在STDIN上给它一个响应


希望这对你有用

我真的希望这不是另一个“我想做
x
而不做
x
”问题……他想在另一个进程中运行一个可执行文件而不运行新进程,所以我想它可能是:-)环境变量工作得特别好。要使用的设置很少,文件系统上也没有任何跟踪。除非在运行程序之前键入“export PASSWORD=iamgod”,在这种情况下,它会出现在您的命令历史记录中…此程序为plink..并且是第三方程序,然后按照plink文档中的建议使用公钥/私钥对。环境变量通过/proc文件系统以与命令行完全相同的方式可见。传输数据的唯一安全方法是通过匿名管道或套接字(即,不是磁盘文件或网络套接字),但您可以将其绑定到fork之前子进程的stdin/stdout。