是否可以在 Mono C# 程序中发送 unix 信号?
Is it possible to send a unix signal in a Mono C# program?
我有一个在 Windows 和 Linux 上运行的 C# 程序。当它在 Linux 上运行时,我希望系统上有另一个进程 运行 能够向其发送命令,并让该进程执行命令。
我最初的直觉是在这个其他进程中实现一个信号处理程序,并让 C# 程序在需要与之交互时发送适当的信号。但是,四处搜索我找不到任何有关发送 Mono 中存在的 unix 信号的功能 API(但是,我能够发现 Mono 支持信号处理,这给了我希望。)
此功能是否作为 Mono 的一部分存在 API?
您正在命名空间 Mono.Unix.Native
中查找 Syscall.kill
(引用 Mono.Posix
)。
使用 ABRT(6 / 中止)自行终止的示例:
using System;
using Mono.Unix.Native;
namespace killself
{
class MainClass
{
public static void Main(string[] args)
{
var currentPID = Syscall.getpid();
Syscall.kill(currentPID, Signum.SIGABRT);
}
}
}
参考:http://docs.go-mono.com/?link=M%3aMono.Unix.Native.Syscall.kill
我有一个在 Windows 和 Linux 上运行的 C# 程序。当它在 Linux 上运行时,我希望系统上有另一个进程 运行 能够向其发送命令,并让该进程执行命令。
我最初的直觉是在这个其他进程中实现一个信号处理程序,并让 C# 程序在需要与之交互时发送适当的信号。但是,四处搜索我找不到任何有关发送 Mono 中存在的 unix 信号的功能 API(但是,我能够发现 Mono 支持信号处理,这给了我希望。)
此功能是否作为 Mono 的一部分存在 API?
您正在命名空间 Mono.Unix.Native
中查找 Syscall.kill
(引用 Mono.Posix
)。
使用 ABRT(6 / 中止)自行终止的示例:
using System;
using Mono.Unix.Native;
namespace killself
{
class MainClass
{
public static void Main(string[] args)
{
var currentPID = Syscall.getpid();
Syscall.kill(currentPID, Signum.SIGABRT);
}
}
}
参考:http://docs.go-mono.com/?link=M%3aMono.Unix.Native.Syscall.kill