問題タブ [lseek]

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 投票する
1 に答える
1904 参照

c - ESPIPEエラーを与えるlseek

通常のファイルを開いています。これはレコードのデータベースとして機能します。私はそれを次のように開きました:

次に、私のfind_record関数で、オフセットを先頭に移動します。

エラーをスローしESPIPEます。今、私は何が起こっているのか分かりません。ファイル記述子はパイプとして扱われますか? はいの場合、なぜですか?

lseek実際に働いていますか?ret_val-1ではないため、その必要があります。

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

c - C でのストリーミング エンジンのベスト プラクティス

LANG: C / ENV: Linux

私はストリーミングエンジンを開発しています。今のところ、ストリームを開始、停止、一時停止できますが、シークは私に多くの頭痛の種を与えている操作です。以前にここで質問し、コード内のいくつかの問題を修正しました答えます。

lseek()関数を使用して、オープン ストリーミング ファイル記述子を最初の引数として渡します。また、次のコードのように、送信に UDP を使用しています。

ストリーミング中にシークしようとすると、ストリーミングが停止し、画像がハングします。

注意すべきことはありますか?たとえば、変更を有効にするためにファイルをシークした後にsleep()またはnanosleep()を試行するなどです。

そのようなエンジンのベスト プラクティスに関する例、論文、関連記事は見つかりませんでした。

編集:

テスト後、ファイルは引き続きストリーミングされたようですが、ネットワーク上の受信デバイスがストリーム接続をキャッチしなくなり、シーク時間を差し引いて終了までの時間を計算すると、ストリームは正常に終了したようです。

コードスニペット:

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

c - ルシークが機能しない

lseek を使用して txt ファイルのサイズを確認しようとしています。残念ながら私は働きません。私の T.Txt には 16 文字が含まれています:ABCDABCDDABCDABCD 何もありません。したがって、number 変数には 16+1 が必要です。なぜ代わりに19なのですか?SEEK_END-1 を使用して最後の位置 1 から開始できない 2 番目の問題。そのお手伝いをさせていただければ幸いです。

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

c - lseek() が呼び出されたときに POSIX read() 関数がバイトを読み取らない

私は次のプログラムを持っています

/var/testfile の次の内容:

プログラムの出力:

lseek() 呼び出しの後に read() 関数がバイトを読み取らない理由がわかりません。これの理由は何ですか?最初の read() 関数呼び出しから得られるのと同じ結果が期待できます。

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

c - lseek() を使用すると、繰り返される文字が出力されます

これを実行すると、私に与えられます。

テスト ファイルには、"TEST" という単語だけが含まれています。単語を逆に印刷できるようにしたい。

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

c - C - ファイル内の構造体を読み取る

こんにちは、ファイルに書き込んだ構造体の情報を読みたいのですfwriteが、これらの情報を抽出できないという問題があります。私は2つのファイルを手に入れました

tttfs.h:

tfs_create.c:

これで、7 ブロックのディスクを作成し、7 ブロックすべてをファイルに書き込みます。最初のブロックでは、ディスクのサイズ (7) をリトルエンディアンで書きました。ブロック[0] = 00、ブロック[1] = 00、ブロック[2] = 01、ブロック[3] = 11などです。

しかし、結果を印刷すると、次のようになります。

私が期待していたものではありませんreadでしたが、同じ結果が得られました。したがって、私のプログラムはディスクから情報を書き込みませんでした。または、ブロックをディスクに書き込むときに問題がありますか?

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

c - read write と lseek を使用して、ファイルまたは stdin の最後の 10 行を出力します

私は tail 関数の実装に取り​​組んread()write()おりlseek()、I/O には と のみを使用することになっています。これまでのところ、次のようになっています。

これまでのところ、10行を超えるファイルでは機能しますが、10行未満のファイルを渡すとブレーキがかかり、そのファイルの最後の行を出力するだけで、stdin. 誰かがこの問題を解決する方法を教えてくれたら、それは素晴らしいことです:D