0

現状では、コードは次のようになります。

fd = open(filename, openflag, perm);

次に、open と receive で perror を呼び出します

open: No error
open: No error
open: No error
open: No error

最終的なエラー コールは次のとおりです。

die(1, "open_fds: File open error");

降伏

SIO_ERROR: open_fds: File open error

意味のあるエラー メッセージを表示するにはどうすればよいですか?

注: これは Windows 環境用であり、私は C に比較的慣れていません。

4

2 に答える 2

2

使用することも、Windows でperror使用することもできstrerror(errno)、どちらも機能するはずです。後者の例を次に示します。

int fd = open("some_made_up_file_name.txt", O_RDONLY);
if(fd < 0)
    printf("%s\n", strerror(errno));

この場合、次のようになります。

そのようなファイル、又はディレクトリはありません

開こうとしているファイルが存在せず、この場合は作成するように指示しなかったためです。open()からのリターンを確認する必要が< 0ありますが、問題があります。

于 2013-01-11T17:25:06.953 に答える
1

私が見た限りではperror、Windowsでも問題なく動作します。open失敗したかどうか(何が返されたか)、失敗した場合、なぜ失敗したのかを知っていますか?ファイルがありませんでしたか、それとも権限の問題でしたか?そして、なぜperror「エラーなし」メッセージを4回出力したのですか?

機能とは何ですか?die私が知る限り、それは標準機能ではありませんか?エラーメッセージを出力するにはどうすればよいですか?

Windowsでは、GetLastErrorを使用してエラーを取得することもできます。errno(と以外perror)。

FormatMessageを使用して、GetLastErrorによって返されたエラーコードに対応するエラーメッセージをフォーマットできます。

于 2013-01-11T17:00:54.670 に答える