gpt4 book ai didi

c# - 从 .net-core 工具中取消子进程

转载 作者:行者123 更新时间:2023-12-04 18:50:40 27 4
gpt4 key购买 nike

我有一个运行 ssh 命令的工具,因此我可以通过反向 ssh 连接到 linux pc。当我想更新我的工具时,写在 .Net Core 2.1 ,更新程序将停止该工具的进程并更新文件。但是通过停止工具 ssh 进程,之前以 Process.Start() 开始, 也将被关闭,因为 ssh 进程是该工具的子进程。

有什么方法可以从我的工具中“拒绝”子 ssh 进程,这样我就不会在更新程序运行时断开连接?

运行 Ubuntu...

C#:

case UssGatewayFunction.NPIConnectSSH:
Log.Information("Connect to MyCompany via ssh");
try
{
Process.Start("ssh", "-R 3521:localhost:22 -p 9450 myuser@1.2.3.4 sleep 30");
response = new DefaultRes(true, UssGatewayFunction.NPIConnectSSH);
}
catch (Exception ex)
{
Log.Error($"Can't start ssh: {ex.Message}");
response = new DefaultRes(false, UssGatewayFunction.NPIConnectSSH);
}

更新程序.sh:
systemctl stop gateway.service
if pgrep "gateway" >/dev/null 2>&1 ; then
#here i loose the ssh connection
pkill -x "init-gateway" || true
pkill -x "gateway" || true
fi
#now just the extracting happens

最佳答案

什么对我有用:

 [DllImport("libc")]
private static extern int system(string exec);

system($"nohup {command} >/dev/null 2>&1 &");
信息: system , nohup

关于c# - 从 .net-core 工具中取消子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54292654/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com