Ejemplo n.º 1
0
        private static bool IsMusl()
        {
#if NETSTANDARD1_1
            var cpu = RuntimeInformation.ProcessArchitecture;
            switch (cpu)
            {
            case Architecture.X86:
                return(Posix.AccessCheck("/lib/libc.musl-x86.so.1", 0) == 0);

            case Architecture.X64:
                return(Posix.AccessCheck("/lib/libc.musl-x86_64.so.1", 0) == 0);

            case Architecture.Arm:
                return(Posix.AccessCheck("/lib/libc.musl-armv7.so.1", 0) == 0);

            case Architecture.Arm64:
                return(Posix.AccessCheck("/lib/libc.musl-aarch64.so.1", 0) == 0);

            default: throw new PlatformNotSupportedException(cpu.ToString());
            }
#else
            using (var proc = Process.GetCurrentProcess()) {
                foreach (ProcessModule mod in proc.Modules)
                {
                    var fileName = mod.FileName;

                    if (!fileName.Contains("libc"))
                    {
                        continue;
                    }

                    if (fileName.Contains("musl"))
                    {
                        return(true);
                    }

                    break;
                }
            }

            return(false);
#endif
        }