問題タブ [strerror]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
352 参照

c - strcpy(strerror(errno),"Hello") が "Hello" をコピーしないのに、{ptr=strerror(errno);strcpy(ptr,"Hello");} がコピーするのはなぜですか?

次のプログラムで何が起こっているのか説明してください。

プログラムの最初と最後に返されたアドレスをチェックアウトし、strerror(errno)毎回同じアドレスを返すことを確認しました.次に、これを確認したら、最初のケースで、同じアドレスをに割り当ててから、文字列をにptrコピーしましたII の場合、 から返されたアドレスに直接コピーしようと"Hello"しました。奇妙な発見がありました。次のことを説明していただければ幸いです。strcpy()"Hello"strerror(errno)

にコピー"Hello"した場合ptr、後続のように成功し、 がprintf()出力ptrされます。しかし、代わりにをHello渡すと、古いエラー メッセージが出力されます。両方のアドレスが同じですか?両方のアドレスが同じであることを確認しました。コピー先は の戻り値にコピーするのと同じはずです。この不一致を二重に確認するために、に直接コピーしようとしましたが、今回もうまくいきませんそして、同じ古いエラー文字列を出力します.しかし、驚くべきことは、この時点でも、アドレスとstrerror(errno)ptrprintf()ptrstrerror(errno)"Hello"ptrstrerror(errno)"Hello"strerror(errno)ptrstrerror(errno)本当にずっと同じです!! どのように可能ですか?それらが同じである場合、どのように異なる文字列を指しているのですか?1つ"Hello"は古いカスタムエラーメッセージですか?

この背後にある理由を説明してください。

出力

0 投票する
2 に答える
1339 参照

c - strerror() の結果が返されない理由

man ページによると、がstrerror(errnum)返されますchar *が、次の警告が表示されます。

で実行するとセグメンテーション違反が発生しますが、で./temp 0はありません./temp 256

誰かがなぜこれが起こるのか、そしてそれを修正する方法を説明できますか (可能であれば)?

temp.c

0 投票する
7 に答える
8467 参照

c - Cでerrnoのシンボリック名を出力するにはどうすればよいですか?

perror()またはを使用strerror()して、 に属する「人間が読める」エラー メッセージを出力できますが、 のシンボリック名 (" " など)出力したいerrno場合はどうすればよいですか?EAGAINerrno

それを行うための便利な関数またはマクロはありますか?

更新:以下の受け入れられた回答とそのコメントのアイデアに基づいて、私が書いたコードを添付します:

0 投票する
1 に答える
202 参照

linux - mkdir で perror のメッセージを理解できない

文字列からディレクトリを作成するコードがあります。cwdはディレクトリ パスを示す文字列です。残念ながら、ディレクトリを作成できないエラーが発生したため、perror()およびstrerror()関数を使用して、エラーのシンボリック名を取得しました。

私の問題は、perror()strerror()が「そのようなファイルまたはディレクトリは存在しません」というエラーを出すことです。ここで mkdir のマニュアル ページを調べましたが、前述のエラーは、マニュアル ページに記載されているエラーのリストにはありません。私は何か間違ったことをしていますか?

0 投票する
1 に答える
417 参照

c - VxWorks での strerror_r のメッセージの最大サイズ

VxWorks は、2 つのパラメーターのみを取るバージョンの strerror_r を提供します。

cURL について言及していますMAXERRSTR_SIZE

vxworks スタイルの strerror_r() は、関数に渡すバッファを使用します。バッファー サイズは、少なくとも rtsold.h で定義されている MAXERRSTR_SIZE (150) である必要があります。

しかし、ディストリビューションのどこにもファイル rtsold.h が見つからないようです。

バッファにコピーされるメッセージの最大サイズは? #define または整数定数がどこかに定義されていますか?

0 投票する
0 に答える
905 参照

c - waitpid の後に strerror(errno) が使用されます。strerror の結果として何が期待されますか?

strerror(errno) で試してみましたが、waitpid の結果文字列を取得しました。
両方の状態でステータス文字列を確認しました:

strerror から以下のプリントを取得しました。

子供が走っている間:

子供の解雇:

waitpid の後の strerror(errno) からの予期される結果文字列は何になるはずです。「子プロセスなし」とはどういう意味ですか?子が正常に終了/終了した場合、それは有効な文字列ですか? 子が実行中/子が終了した場合、waitpidからの戻り値は何を期待する必要がありますか?

ここで私の場合、strerror は次のように返します。

使用したコード:

O/P:

スリープなしの O/P:

0 投票する
2 に答える
1192 参照

c - 現在のロケールで strerror_l を使用するには?

strerrorマルチスレッドに使用される (スレッドセーフではない) Linux コードを修正しています。私はそれを見つけ、strerror_r両方strerror_lともスレッドセーフです。の定義が異なるためstrerror_r(定義_GNU_SOURCEが異なる場合)、新しい関数を使用したいのですが、現在のロケールのオブジェクトstrerror_lを取得するにはどうすればよいですか? locale_t私はiconv何も使用しておらず、単純なlibcだけであり、「デフォルトロケール」オブジェクトを取得する方法がわかりません(エラーがどの言語で出力されたかは気にしません。人間が読める文字列が欲しいだけです. )

0 投票する
1 に答える
10945 参照

python - 「str」オブジェクトには属性がありません

Excel で列を開き、そのセルからすべての値をリストに移動しようとしています。

それを実行すると、次のエラーが表示されます。

しかし、私はすでにすべてをインポートしています。

インポートしたものは次のとおりです。

0 投票する
1 に答える
206 参照

c - Zed Shaw のデバッグ マクロを MSVC に移植する

Zed Shaw のデバッグ マクロは、彼の C の本「Learn C the Hard Way」が無料で読めたときに、彼の Web サイトで見つけました。最初は Linux 用に設計されていましたが、かなりうまく機能し、しばらく使用しています。

現在、Windows 用の C コードを書き始めており、Visual Studio を使用しています。作業中のプロジェクトでこれらのデバッグ マクロを使用したいと考えています。

問題は次のとおりです。 check マクロを使用して、関数がエラーなしで返されることを確認したいとしましょう。

使用されるマクロの定義は次のとおりです。

ただし、私が遭遇した問題は、Visual Studio がstrerror()非推奨としてマークされ、コンパイルが中止されることでした。プロジェクトでスレッドを使用する予定なので、可能であれば「無視」ルートには行きたくありません。

私がしたclean_errno()ことは、マクロと同じことを行う関数を作成しましたが、グローバル バッファー変数と呼び出しstrerror_s()を使用してコピーし、マクロへのポインターを返すことlog_err()でした。しかし今、私はしなければなりません:

  • この1つの3ライナー関数のためだけに、まったく新しいヘッダーとCファイルを作成します。これは豊富だと思います
  • または、デバッグ マクロのヘッダーで関数を宣言して実装するだけです。これは、C の良い慣行とはまったく見なされず、非常に醜いものでもあります。

これに対するエレガントでシンプルなソリューションを提供する、私が知らない他のトリック/ハックはありますか?

0 投票する
2 に答える
683 参照

c - GNU strerror_r バッファーの意味

これらのbuf/buflenパラメータは何のためですか?

空のバッファは魅力のように機能します:

また、このバッファは未使用のように見えます: