作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将用户 MyUser 的密码提供给 psql.exe。不幸的是,我所有的尝试都失败了。请看下面的代码:
var psi = new ProcessStartInfo(@"c:\Program Files\PostgreSQL\9.5\bin\psql.exe", "-w -t -h localhost -p 5432 -U MyUser -c \"SHOW data_directory\"")
{
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardInput = true,
RedirectStandardError = true,
CreateNoWindow = true
};
using (var process = new Process { StartInfo = psi })
{
process.OutputDataReceived += (sender, e) =>
{
Console.WriteLine($"Output: {e.Data}");
};
process.ErrorDataReceived += (sender, e) =>
{
Console.WriteLine($"Error: {e.Data}");
};
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.StandardInput.WriteLine("Password");
process.StandardInput.Flush();
process.WaitForExit();
Console.WriteLine($"Exit code: {process.ExitCode}");
}
psql.exe 从不从重定向的标准输入中读取密码。因此进程卡在 WaitForExit 上。如果我使用 CreateNoWindow=false,那么我可以将密码写入控制台窗口并在 OutputDataReceived、ErrorDataReceived 中接收答案,但这不是我需要的。我需要在没有用户交互的情况下运行 psql.exe。请注意,密码不应存储在 pgpass.conf 中。
最佳答案
试一试:
proc.StartInfo.EnvironmentVariables["PGPASSWORD"] = "mypass";
它对我有用。
关于c# - 如何将输入数据发送到 Postgres psql.exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37340934/
我是一名优秀的程序员,十分优秀!