mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-12-12 22:36:59 +00:00
40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace Ryujinx.Common.Utilities
|
|
{
|
|
public partial class OsUtils
|
|
{
|
|
[LibraryImport("libc", SetLastError = true)]
|
|
private static partial int setenv([MarshalAs(UnmanagedType.LPStr)] string name, [MarshalAs(UnmanagedType.LPStr)] string value, int overwrite);
|
|
|
|
public static void SetEnvironmentVariableNoCaching(string key, string value)
|
|
{
|
|
// Set the value in the cached environment variables, too.
|
|
Environment.SetEnvironmentVariable(key, value);
|
|
|
|
if (!OperatingSystem.IsWindows())
|
|
{
|
|
int res = setenv(key, value, 1);
|
|
Debug.Assert(res != -1);
|
|
}
|
|
}
|
|
|
|
// "dumpable" attribute of the calling process
|
|
private const int PR_SET_DUMPABLE = 4;
|
|
|
|
[DllImport("libc", SetLastError = true)]
|
|
private static extern int prctl(int option, int arg2);
|
|
|
|
public static void SetCoreDumpable(bool dumpable)
|
|
{
|
|
if (OperatingSystem.IsLinux())
|
|
{
|
|
int dumpableInt = dumpable ? 1 : 0;
|
|
int result = prctl(PR_SET_DUMPABLE, dumpableInt);
|
|
Debug.Assert(result == 0);
|
|
}
|
|
}
|
|
}
|
|
}
|