2013-04-09 38 views
1

我想從單聲道使用文件io函數(打開,讀取,寫入)和僞終端(http://linux.die.net/man/4/pts)函數(grantpt,unlockpt,ptsname)。翻譯參數和返回值是微不足道的(如果你可以驗證它們,我將不勝感激),但是我找不到相應的圖書館。聲明的文件io和僞終端p/invoke

我的Linux發行版是Arch Linux on ARM(Raspberry PI)。由於ARM平臺只有32位,我可以使用int32作爲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); 
} 
+0

你的問題是如何與PInvoke的?你只是不知道庫名稱,這與P/Invoke無關。 – antonijn 2013-04-09 11:03:03

回答

1

的功能似乎是在glibc的,所以dllimport的會是這個樣子:

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

謝謝。從我所知道的,libc.so應符號鏈接到libc.so.6,我是否正確? – 2013-04-09 11:10:25

+0

@LukasRieger我也這麼認爲,但我沒有在我的電腦上找到它。 – antonijn 2013-04-09 11:12:44