タグ付けされた質問 「libc」

4
特定のglibcバージョンにリンクするにはどうすればよいですか?
Ubuntu Lucid 10.04 PCで何かをコンパイルすると、glibcにリンクされます。Lucidはglibcの2.11を使用します。古いglibcがインストールされている別のPCでこのバイナリを実行すると、glibc 2.11がないとコマンドが失敗します... 私の知る限り、glibcはシンボルのバージョン管理を使用しています。gccに特定のシンボルバージョンを強制的にリンクさせることはできますか? 具体的には、ARM用のgccクロスツールチェーンをコンパイルしてみます。
110 linux  gcc  linker  glibc  libc 


7
サイズとカウントを引数として取るfread / fwriteの根拠は何ですか?
ここで、freadとfwriteがメンバーあたりのサイズをとり、単にバッファーとサイズを取得するのではなく、読み取り/書き込みされたメンバーの数を数えて返す理由について、ここで議論しました。私たちが思いつくことができる唯一の用途は、プラットフォームの配置で均等に割り切れないためにパディングされているが、この選択を保証するほど一般的ではない構造体の配列を読み書きする場合ですデザインで。 FREAD(3) : 関数fread()は、streamが指すストリームから各サイズバイト長のデータのnmemb要素を読み取り、ptrで指定された場所に格納します。 関数fwrite()は、各サイズバイト長のデータのnmemb要素をstreamが指すストリームに書き込み、ptrで指定された場所から取得します。 fread()およびfwrite()は、正常に読み書きされた項目の数を返します(つまり、文字数ではありません)。エラーが発生した場合、またはファイルの終わりに達した場合、戻り値は短いアイテム数(またはゼロ)です。
96 c  libc 

5
snprintf()は常にnullで終了しますか?
snprintfは常にnullで宛先バッファを終了しますか? 言い換えれば、これで十分ですか? char dst[10]; snprintf(dst, sizeof (dst), "blah %s", somestr); または、somestrが十分に長い場合は、このようにする必要がありますか? char dst[10]; somestr[sizeof (dst) - 1] = '\0'; snprintf(dst, sizeof (dst) - 1, "blah %s", somestr); 私は、標準が何を言っているのか、そして標準的な振る舞いではないいくつかの人気のあるlibcが何をするのかということに興味があります。
85 c  posix  libc 

1
ASLRがオンになっているのに、__ libc_start_mainのアドレスがGDB内で常に同じであるのはなぜですか?
Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6 (gdb) r The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /home/firstlove/projects/org-ioslide/example/a.out Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6 (gdb) r The program being debugged has been started already. Start it …
16 c  linux  gdb  libc  aslr 

5
(.gitディレクトリに)inotifyイベントがありません
私はinotifyイベントを使用してファイルの変更を監視しています(たまたま、Pythonからlibcを呼び出しています)。 中にいくつかのファイルについてはgit clone、私は奇妙な何かを参照してください。私が見IN_CREATEたイベントを、そして経て、私が見lsたファイルがコンテンツを持っていること、しかし、私は見ることはありませんIN_MODIFYかIN_CLOSE_WRITE。私IN_CLOSE_WRITEはファイルに応答したいので、特に問題を引き起こしています。具体的には、ファイルのコンテンツのアップロードを開始することです。 異常な動作をするファイルは.git/objects/packディレクトリにあり、末尾が.packまたは.idxです。gitが作成する他のファイルには、より規則的なIN_CREATE-> IN_MODIFY-> IN_CLOSE_WRITEチェーンがあります(私はIN_OPENイベントを監視していません)。 これはMacOSのdockerの内部にありますが、リモートシステムのLinuxのdockerでも同じことを確認したため、MacOSの側面は関係ないのではないかと疑っています。見ていgit cloneて同じ Dockerコンテナーにいる場合、これが表示されます。 私の質問: これらのファイルでこれらのイベントが欠落しているのはなぜですか? それについて何ができますか?具体的には、これらのファイルへの書き込みの完了にどのように応答できますか?注:理想的には、「未完成」の文章を不必要に(誤って)アップロードしないように、「完成」したときに返信したいと思います。 編集:https ://developer.ibm.com/tutorials/l-inotify/を読むと、私が見ているものと一致しているように見えます のような名前の個別の一時ファイル。tmp_pack_hBV4Alz作成、変更、および閉じられます。 ハードリンクは、最終的に、このファイルに作成された.pack名前。 元のtmp_pack_hBV4Alz名前は削除されます。 私の問題は、inotifyをファイルのアップロードのトリガーとして使用しようとしていて、その.packファイルが別のファイルへのハードリンクであることを認識し、この場合はアップロードしていると思いますか?
11 linux  git  docker  libc  inotify 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.