是否可以在 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