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