Я хотел бы позвонить execl()
из моего приложения Mono. Вот заявление:Выполнение системных вызовов glibc с C#
[DllImport("libc.so.6")]
private static extern int execl(string path, string argv);
Тогда, где pathname
и arguments
стандартные C# строковые объекты:
execl(pathname, pathname + " " + arguments);
execl()
вызов не работает, однако, и если я получать информацию об ошибке с perror()
, Я вижу «Плохой адрес».
Я был уверен в документации, что Mono/C# автоматически преобразует строки в требуемые строки с нулевым завершением в стиле c, но я не смог заставить это работать.
Каков правильный способ сделать системные вызовы с C#/Mono? Должен ли я использовать массив типов C# sbyte
, а затем \0
?