小编Ste*_*ler的帖子

使用.NET的Process类重定向标准输入/输出/错误流

我正在尝试为基于交互式控制台的应用程序编写包装器.为此,我使用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.exeuptime,输出就会打印出来.

互联网上的所有解决方案都使用ReadToEnd,但我不能使用它,因为我有一个动态的通信,我必须阅读stdout/ err写入stdin.

有人有想法吗?

更新

我在链接的帖子上玩过贴子拉链.然后我尝试创建一个小的"概念证明"代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; …
Run Code Online (Sandbox Code Playgroud)

c# stdin stdout process stderr

6
推荐指数
1
解决办法
2万
查看次数

选择后触发

我有一个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)

但这不起作用.

谢谢

最好的祝福

sqlite select triggers

3
推荐指数
1
解决办法
5103
查看次数

标签 统计

c# ×1

process ×1

select ×1

sqlite ×1

stderr ×1

stdin ×1

stdout ×1

triggers ×1