文件io和伪终端的p / invoke声明

时间:2013-04-09 11:01:01

标签: c# linux mono pinvoke

我想从mono使用文件io函数(open,read,write)和伪终端(http://linux.die.net/man/4/pts)函数(grantpt,unlockpt,ptsname)。

翻译参数和返回值是微不足道的(仍然,我会很感激,如果你可以验证它们),但我找不到相应的图书馆。

我的Linux发行版是ARM上的Arch Linux(Raspberry PI)。 由于ARM平台只有32位,我可以使用int32 for int / size_t等

非常感谢。

internal class LinuxNativeMethods
{
    //int open(const char *pathname, int flags);
    [DllImport("??.so")]
    internal extern int open(string name, int flags);

    //ssize_t read(int fd, void *buf, size_t count);
    [DllImport("??.so")]
    internal extern int read(int fd, byte[] buffer, int length);

    //ssize_t write(int fd, const void *buf, size_t count); 
    [DllImport("??.so")]
    internal extern int write(int fd, byte[] buffer, int length);

    //int grantpt(int fd);
    [DllImport("??.so")]
    internal extern int grantpt(int fd);

    //int unlockpt(int fd);
    [DllImport("??.so")]
    internal extern int unlockpt(int fd);

    //i later marshall the pointer to a string
    //char *ptsname(int fd);
    [DllImport("??.so")]
    internal extern IntPtr ptsname(int fd);
}

1 个答案:

答案 0 :(得分:1)

函数似乎是glibc,所以dllimport看起来像这样:

[DllImport("libc.so.6")]