3

私は次のようなmknodコマンドを使用しているACプログラムを作成しようとしています

#include<stdio.h>
#include<fcntl.h>
#include<string.h>

char info[50];

main() {
    int fdr;
    int rc = mknod("testfile",'b',0);
    if(rc<0) {
        perror("Error in mnod");
    }
    fdr=open("testfile",O_RDONLY);
    read(fdr,info,50);
    printf("\n Received message=%s",info);
    printf("\n");
} 

そして、いくつかのことをします。Red Hatシステムではうまく機能しますが、ubuntuで失敗し、無効な引数でエラーが発生します。

4

3 に答える 3

3

mknod非推奨です。あなたはそれを使うべきではありません。FIFOを作成する場合は、標準を使用しますmkfifo。通常のファイルを作成する場合は、creatまたはopenを使用しO_CREATます。はいmknod、デバイスノードを作成できます。一部のシステムではまだ作成できる場合がありますが、最近のLinuxシステムでは、カーネルに依存したりudevd、これを処理したりします。

于 2011-02-27T16:41:50.530 に答える
2

mknod("テストファイル",'b',0);

'b'ここでの mknod のあまり賢明な議論ではありません。の引数は、パーミッション マスク (umask で変更) と(通常のファイルの場合) または(FIFO の場合)mknodのビットごとの OR である必要があります。例えば:S_IFREGS_IFIFO

mknod("テキストファイル", S_IFREG | 0666, 0);

于 2011-02-27T16:00:20.483 に答える