問題タブ [low-level-io]
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.
linux - 同じ OS を実行しているサイズの異なる 2 つのイメージ ファイルの整合性の問題
要件があります。ディスクサイズが異なる軽量のLinuxディストリビューション(例:slitaz)を実行している2つの仮想イメージファイルがあります。特定の時点でこれらのイメージ ファイルを実行しているカーネルの整合性をブロック/セクター レベルでチェックしたいと考えています。
イメージをループ デバイスにマウントし、必要なカーネル ファイル (vmlinuz および initrd) にアクセスしてそれらをハッシュし、そのハッシュをこれらのファイルの正規のハッシュと比較することで、ファイル システム レベルでの整合性チェックを既に完了しています。
ブロックレベルで整合性をチェックするケースを実行したいのですが、私がしたことは次のとおりです。
しかし、この場合の整合性をチェックする方法はありますか?
同じ Linux ディストリビューションを実行しているため、ブロック/セクター レベルのコンテンツは、2 つのイメージ ファイルのカーネルに属する部分と一致することがわかっています。
カーネルのブロック レベル情報を取得して整合性をチェックすることができません。カーネル ファイルが複数のブロックに存在すると仮定すると、情報を取得するにはどうすればよいですか? これに関するツールまたはガイダンスは大歓迎です。
vba - バイナリモードでのVBA書き込みファイル(特定のバイトを上書きすると、次のバイトで予期しない変更が行われ、値が0に設定されます)
VBAを使用してファイルの一部を変更したいのですが.bmp
、選択したバイトを上書きすると、次のバイトがゼロに設定されることを除いて、すべてうまくいきます。私のマクロは次のとおりです。
バイト番号 100 を変更すると、バイト番号 101 の値が 00 に設定されるのはなぜですか? それを変更する方法とそれが発生する理由は何ですか?
Cor_Blimey が変換関数 CByte(255) を使用して指摘したように編集すると、問題が解決します。これは255
、VBA では整数であり、これは 16 ビットの数値であるため、ファイルに入れると 2 バイトが上書きされるためです。
matlab - .txt ファイル内のテキストを変更し、MATLAB で新しいファイル出力を作成する
タイトルが少しずれているように思われる場合は、事前にお詫び申し上げます。正確に何と名付けるべきかを決めるのに苦労しました。とにかく、基本的に私が今やっていることは、低レベルの I/O を扱う完全な宿題です。私の 1 つの課題では、2 つの .txt ファイルを渡しました。1 つは電子メール アドレスのリストを含み、もう 1 つは電子メール リストに含まれなくなったリスト メンバーを含みます。私がしなければならないことは、2 番目のリストからメンバーのメールを削除することです。さらに、.txt ファイルには驚くべき結果が含まれている可能性があります。メールをクリーンアップし、メールの後にあるセミコロン、コンマ、スペースなどの不要な句読点を削除する必要があります。さらに、すべてのテキストを小文字にする必要があります。私はこの問題にさまざまな方法で苦労しています (出力に必要なものをファイルに書き込む方法が完全にはわかりません)。しかし、今のところ私の主な関心事は、購読解除メッセージを正しい順序で出力することです。Sortrow が機能していないようです。
ここにいくつかのテストケースがあります:
元のメーリング リスト
いいえのような人々:
その後、次のようになります。
私のファイル出力:
そのため、アムロは親切にも解決策を提供してくれましたが、それは私が現在知っているよりも少し上です. 私の主な問題は、登録解除メッセージを出力するときに、元のメーリング リストと同じ順序にする必要があることです。たとえば、クッパはルイージの前に不満リストに載っていましたが、登録解除メッセージでは、ルイージが彼の前に来る必要があります。
これが私の元のコードです:
matlab - MATLAB による在庫補充 (低レベル I/O)
I/O が私を混乱させているのはその時です。この場合、私の目標は、在庫品目の .txt ファイルと価格の別の .txt ファイルを取り込んで、品目の補充の総費用と、元の在庫を含む .txt ファイルを出力する関数を作成することです。データと補充が必要なアイテムの量。例えば:
注: ヘッダーは .txt ファイルに含まれており、常に 5 つのアイテムが補充されます。
出力ファイルは次のようになります。
私の出力合計は271になるはずです。
アムロは親切にも、必要なセリフを引き出す方法と、持っているものから必要なものを差し引く方法を理解するのを手伝ってくれました。今、私の最後の苦労 (そして、問題をより適切にパーソナライズする前に克服する必要がある最後のハードル) は、元のデータと補充データを出力する final を作成する方法を考え出すことです。テストケースのように見える必要があります
これは近いですが、アイテム名と番号の間にスペースが 1 つだけある再入荷データを出力する必要があります。代わりに、それは私に与えています:
私もこれを試しました:
セルを他の形式に変換する必要がありますが、(Kill_Cell でわかるように) インデックスを作成できません。終わり
それがすべてです。念のために私に与えられたメモは次のとおりです。
c - select() が errorfds に反応する原因となった「例外的な状態」をどのように見分けるのですか?
そのマニュアル ページによると、select()システム コールは、1 つまたは複数のファイル記述子の 3 つの異なる側面の監視を提供します: 読み取りの準備ができているか、書き込みの準備ができているか、または「エラー」または「例外的な状態」(言語が異なります) が発生しました。これらのうちどれを監視するかは、 、、 とfd_set
呼ばれる 3 つの引数で指定します。と の適切な使用法に関する優れたドキュメントと例はたくさんありますが、で役立つものはほとんど見つかりませんでした。readfds
writefds
errorfds
readfds
writefds
errorfds
とにかく、以下で説明する理由によりerrorfds
、試してみたところselect()
、実行ループ内の呼び出しがファイル記述子の 1 つで「例外的な状態」に応答する状況がいくつか見つかりました。たとえば、PTY に接続された TTY は、PTY がマスター側から閉じられている間に、このような状態を引き起こします。
しかし、今は何ですか?ファイル記述子で「例外的な状態」が発生したことは知っていますが、一般的に、その原因を正確に特定するにはどうすればよいですか? 確かに見ているだけでerrno
は答えは出ません(その時点では常に0です)。ioctl
私が知っておくべき「魔法」はおそらくありますか?
さらなる背景:多くの私のプログラム (ほとんどが C で書かれています) は、シリアル ポートを介して外部ハードウェアと通信します。テストのために、他のプログラムがシリアル ポートのように接続できる対応する TTY に PTY を作成する単純なサーバーも作成しました。基本的なレベルでは、これはすべてうまく機能していますが、エラーやその他の例外的な状況の処理は現在まったく実装されていないため、非常に厄介な動作が発生することがあります。これは変える必要があります!
私が特に関心を持っている例外的な条件の 1 つは、接続が切断されているかどうかです。たとえば、ユーザーが USB-to-serial アダプタを抜いたために、ポートがなくなったときに通知できれば便利です。読み取りエラーと書き込みエラーを適切に処理することで、最も厄介な意図しない副作用を回避できるように見えますが、errorfds
他にやるべきこと (監視、またはおそらく他のシグナル) があるかどうか疑問に思っていました。残念ながら、UNIX のシグナル処理については、私はまったく詳しくありません。
c - open() と read() を使用して C の単語を交互に読む 2 人の子供
2 つの子を持つ 2 つの入力ファイルからの読み取りで問題に直面しています。2 つの子は、各ファイルから単語を交互に読み取り、親に送信して、次のように出力する必要があります。
input1: "私は本当に"
input2: 「バカです」
出力: 「私は本当に愚かです」
関数 open (読み取り用に入力ファイルを開くため) と read を使用してそれを行うにはどうすればよいですか? 子の「息子」関数 (子には 2 つの同様の関数があり、1 つは偶数の単語を読み取り、もう 1 つは奇数の単語を読み取ります) は次のようになります。
この問題で私を助けてくれますか? 助けてくれてありがとう。
編集: 演習を読み間違えました。2 つの異なる入力ファイルがあります。
c - Crypt を使用した低レベル IO
パスワードの一致が見つかるまで、ファイルの各行から取得された暗号化された文字列を AAAA-ZZZZ と比較しようとしています。ユーザーパスワードは 4 文字であることが保証されています。私がやろうとしているのは、LowLevel IO を使用してファイルを取り込み、各行の復号化されたパスワードを含む新しいファイルに出力することです。私はまだ C プログラミングが得意ではないので、お手柔らかにお願いします。AAAA から ZZZZ までの配列またはリストを作成し、それぞれをファイル行の復号化されたバージョンと比較する方法についての指示が必要です。
- ファイルを 1 行ずつ復号化して char [] に保存する方法
- パスワードが見つかるまで各行を別のchar []と比較する方法
例えば:
行が $1$6gMKIopE$I.zkP2EvrXHDmApzYoV.B の場合。次の行は $1$pkMKIcvE$WQfqzTNmcQr7fqsNq7K2p0 です。復号化後の結果のパスワードが ABSZ および TAZE であると仮定すると、新しいファイルは、最初の行が ABSZ で、2 行目が TAZE になります。
これは私がこれまでに持っているものです:
ここにファイルがあります: