gpt4 book ai didi

c# - 从 C# 进行 glibc 系统调用

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:30 24 4
gpt4 key购买 nike

我想从我的 Mono 应用程序调用 execl()。这是声明:

[DllImport("libc.so.6")]
private static extern int execl( string path, string argv );

然后,pathnamearguments 是标准的 C# 字符串对象:

execl(pathname, pathname + " " + arguments);

但是,execl() 调用不起作用,如果我使用 perror() 获取错误信息,我会看到“错误地址”。

文档向我保证,Mono/C# 会自动将字符串转换为所需的 c 样式空终止字符串,但我无法让它工作。

从 C#/Mono 进行系统调用的正确方法是什么?我应该使用 C# 的 sbyte 类型数组,后跟 \0 吗?

最佳答案

在我的 x64 系统上

Linux DNA-NOTEBOOK 3.18.2-2-ARCH #1 SMP PREEMPT Fri Jan 9 07:37:51 CET 2015 x86_64 GNU/Linux

Mono JIT compiler version 3.12.0 (tarball Thu Jan 15 18:46:56 UTC 2015).

下面的代码运行良好

[DllImport("libc.so.6")]
private static extern int execl(
[MarshalAs(UnmanagedType.LPTStr)] string path,
[MarshalAs(UnmanagedType.LPTStr)] string argv);

public static void Main()
{
execl("/usr/bin/bash", string.Empty);
}

你运行的是什么版本的单声道?您还可以向我们提供调试信息或在某处​​发布跟踪信息吗?

关于c# - 从 C# 进行 glibc 系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27977196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com