我正在尝试为基于交互式控制台的应用程序编写包装器.为此,我使用C#和Process类.我正在尝试重定向stdin/ out/ err,但它不起作用.
示例代码:
ProcessStartInfo startInfo = new ProcessStartInfo("admin.exe");
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.RedirectStandardInput = true;
startInfo.UseShellExecute = false;
Process process = Process.Start(startInfo);
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.OutputDataReceived += (s, e) => Console.WriteLine(e.Data);
process.ErrorDataReceived += (s, e) => Console.WriteLine(e.Data);
while (true)
{
process.StandardInput.Write("uptime" + Environment.NewLine);
process.StandardInput.Flush();
Thread.Sleep(1000);
}
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
什么都没发生.但如果我开始admin.exe写uptime,输出就会打印出来.
互联网上的所有解决方案都使用ReadToEnd,但我不能使用它,因为我有一个动态的通信,我必须阅读stdout/ err写入stdin.
有人有想法吗?
我在链接的帖子上玩过贴子拉链.然后我尝试创建一个小的"概念证明"代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; …Run Code Online (Sandbox Code Playgroud) 我有一个sqlite3数据库.有一张桌子上有一些日志.这些日志由工具呈现,并由它写入文本文件(或其他内容).
在此之后,可以删除日志.是否可以在select之后在sqlite3中创建一个触发器,它会自动删除日志?
像这样:
CREATE TRIGGER after_select_x
AFTER SELECT ON x
BEGIN
DELETE FROM x WHERE id = selected.id;
END;
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
谢谢
最好的祝福