open() は新しいファイル記述子 posix を返します。

open() は新しいファイル記述子 posix を返します。

posixでopen()の戻り値を設定する必要があります。 Linuxのマニュアルページに記載されているように「新しいファイル記述子」を返す方法:

戻り値

 open(), openat(), and creat() return the new file descriptor, or -1
 if an error occurred (in which case, errno is set appropriately).

編集:Goldilocks、ありがとう!私は正しい方向を見ていませんでした。私がやっていることは、このシステムコールの戻り値を変更することです。明らかに間違ったものを返します。

ベストアンサー1

ファイルを開くには、次の構造を使用できます。

int fd;
if ((fd = open(path, flags)) < 0) {
    /* An error occurred, the reason is in errno */
    int _errno = errno; /* Save errno value */
    fprintf(stderr, "Failed opening file '%s': %s\n", path, strerror(_errno));
    return;
}
/* The file was successfully opened */

したがって、戻り値には通常、ファイル記述子が1つしかありません。この場合、-1エラーが発生しました。発生したエラーは変数に保存されます(ソースファイルに含まれて取得errno)。errno.h

おすすめ記事