Linux でのファイル I/O プログラミング
パラメータ 1: pathname、ファイルが配置されているパス
パラメータ 2: フラグ、ファイル権限、プログラムプロセスに関連する
一般的なマクロは次のとおりです: O_WRONLY、O_RDONLY、O_RDWR、O_EXCL、O_APPEND、O_DUMP
パラメータ 3: ファイルの作成時に使用されるモード。通常は umask の値。
戻り値: ファイル記述子が正常に返され、それ以外の場合は -1.
fd: ファイル記述子
buf: 書き込むデータを格納します
count: 書き込みの長さ (バイト単位)
戻り値: 書き込みに成功した場合は書き込んだ文字長を返し、そうでない場合は-1を返します。
buf: 読み込むデータを格納します
count: 読み取られた長さ (バイト単位)
戻り値: 読み込みに成功した場合は読み込んだ文字長を返し、そうでない場合は-1を返します。
例えば:###
#含む###
(5) lseek、ファイルオフセットの変更
SEEK_CUR 現在のオフセット位置
SEEK_SET ファイルの開始位置
注: オフセットがファイルの長さより大きい場合、ホールが生成されます。ホールは、設定されたオフセットがファイルの終端を超え、元のファイルの終端と新しいオフセット位置の間にあるデータを書き込むことによって発生します。 . それができた穴です。ホールはディスク領域を占有しないので使用できます:
リーリー
###例えば:###
リーリー
(6) アクセスにより、ファイルが読み取り可能、書き込み可能、実行可能か、または存在するかどうかが決まります。
リーリー
パス名: ファイル名
F_OK ファイルは存在しますか
R_OK ファイルに読み取り権限があるかどうか
(7) dup または dup2、同じファイル テーブルを指すファイル記述子を作成します
リーリー
oldfd: 元のファイル記述子
newfd: 新しいファイル記述子の値を指定します。記述がすでに存在する場合は、最初にそれを閉じます。oldfd が newfd と等しい場合、ze は閉じずに newfd を返します。
ファイルのカーネル構造について簡単に説明します: まず、コンピュータ システムにはプロセス テーブルがあります。各プロセス テーブル エントリには、オープン ファイル記述子テーブルがあります。オープン ファイル記述テーブルには、多くのファイル記述があります。記述子テーブル項目, 各アイテムには、ファイル記述子フラグとファイル ポインタの 2 つの部分が含まれます。ファイル ポインタはファイル テーブルを指します。ファイル テーブルには、ファイルのステータス フラグ (読み取り可能か書き込み可能か) と、ファイルのオフセットが格納されます。現在のファイルです。v ノード テーブルを指す v ノード ポインタもあります。v ノード テーブルには主に、ファイルの所有者、ファイルの長さ、ファイルのデバイス、場所などの一連の情報が格納されますディスク上のファイルの実際のデータ ブロック。この説明ではわかりにくいかもしれないので、図を使って説明しましょう:
(对于以下会主要是针对的内核缓冲)由于io操作会首先将数据放入内核缓冲区,所以在写的时候如果出现系统故障则缓冲区的数据可能会丢失,所以为了防止这种情况发生,以上两个函数使得内核缓冲区的数据立即写入磁盘。
#include void sync(void);将所有缓冲排入写队列,然后立即返回 int fsync(int fd);将所有缓冲排入写队列,直到该缓冲去的数据写入磁盘后才返回。 int fdatasync(int fd);几乎和fsync函数相同,只是fdatasync(int fd)函数只影响数据部分,而fsync还会同步更新文件的属性。
#include #include int fcntl(int fd, int cmd, ... /* arg */ );
fd:文件描述符
cmd 指明该函数执行什么功能
F_DUPFD 赋值文件描述符,功能相当于dup和dup2函数。例如:
dup(fd)等价于
fcntl(fd,F_DUPFD,0)
dup2(oldfd,newfd)等价于
close(newfd);
fcntl(oldfd,F_DUPFD,newfd);
F_GETFD 的到文件描述符标志,当前之定义一个文件描述符标志,FD_CLOSEEXEC.此时第三个参数被忽视。
F_SETFD 设置文件描述符标志,设置的值是函数的第三个参数,其一般可设置为0表示关闭,1表示打开。
F_SETFL 设置文件状态标志,其值放在函数的第三个参数,和open函数第二个参数的值一样的。
F_GETFL 得到文件状态标志。此时第三个参数被忽视。
arg 可选参数,根据第二个参数填写。
返回值:出错返回-1,否则哈返达到的标志。
例如:
#include #include #include #include int main(int argc,char * argv[]) { int fd; int val=3; if( (fd = open(argv[1],O_RDWR|O_APPEND)) == -1 )//测试一下是否可以同时检测出文件的读写属性 { exit(2); } if( val = fcntl(fd,F_GETFL,0) == -1 ) { exit(1); } printf("%d\n",val); printf("%d %d %d\n",O_RDONLY,O_WRONLY,O_RDWR); int n = val & O_ACCMODE; if( n == O_RDONLY) printf("read\n"); if(O_WRONLY & val ) printf("write\n"); if( n == O_RDWR) printf("read and write\n"); }
linux中有两个级别的缓冲:IO缓冲与内核缓冲
(1)IO缓冲:对于标准IO操作,都会有一个缓冲区,当用户想要写数据时,首先将数据写入缓冲区,待缓冲区满之后才能调用系统函数写入内核缓冲区。当用户想读取数据时,首先向内核读取一定的数据放入IO缓冲区,读操作从缓冲区中读数据,当读完IO缓冲区的数据时,才能再读取数据到IO缓冲区。
目的:减少对磁盘的读写次数,提高工作效率。
(2)内核缓冲区:操作系统内核部分也有缓冲,其与IO缓冲区是不同的,其主要区别用一张图表示:
以上がLinux でのファイル I/O プログラミングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

インターネットは単一のオペレーティングシステムに依存していませんが、Linuxはその上で重要な役割を果たしています。 Linuxは、サーバーやネットワークデバイスで広く使用されており、安定性、セキュリティ、スケーラビリティに人気があります。

Linuxオペレーティングシステムのコアは、コマンドラインインターフェイスで、コマンドラインを介してさまざまな操作を実行できます。 1.ファイルおよびディレクトリ操作は、ファイルとディレクトリを管理するために、LS、CD、MKDIR、RM、その他のコマンドを使用します。 2。ユーザーおよび許可管理は、useradd、passwd、chmod、その他のコマンドを介してシステムのセキュリティとリソースの割り当てを保証します。 3。プロセス管理は、PS、Kill、およびその他のコマンドを使用して、システムプロセスを監視および制御します。 4。ネットワーク操作には、Ping、Ifconfig、SSH、およびネットワーク接続を構成および管理するためのその他のコマンドが含まれます。 5.システムの監視とメンテナンスは、TOP、DF、DUなどのコマンドを使用して、システムの動作ステータスとリソースの使用を理解します。

導入 Linuxは、柔軟性と効率性により、開発者、システム管理者、およびパワーユーザーが好む強力なオペレーティングシステムです。しかし、頻繁に長く複雑なコマンドを使用することは退屈でERです

Linuxは、サーバー、開発環境、埋め込みシステムに適しています。 1.サーバーオペレーティングシステムとして、Linuxは安定して効率的であり、多くの場合、高電流アプリケーションの展開に使用されます。 2。開発環境として、Linuxは効率的なコマンドラインツールとパッケージ管理システムを提供して、開発効率を向上させます。 3.埋め込まれたシステムでは、Linuxは軽量でカスタマイズ可能で、リソースが限られている環境に適しています。

はじめに:Linuxベースの倫理的ハッキングでデジタルフロンティアを保護します ますます相互に接続されている世界では、サイバーセキュリティが最重要です。 倫理的なハッキングと浸透テストは、脆弱性を積極的に特定し、緩和するために不可欠です

基本的なLinux学習の方法は次のとおりです。1。ファイルシステムとコマンドラインインターフェイス、2。LS、CD、MKDIR、3。ファイルの作成と編集などのファイル操作を学習するマスター基本コマンド、4。

Linuxは、サーバー、組み込みシステム、デスクトップ環境で広く使用されています。 1)サーバーフィールドでは、Linuxは、その安定性とセキュリティにより、Webサイト、データベース、アプリケーションをホストするための理想的な選択肢となっています。 2)埋め込みシステムでは、Linuxは高いカスタマイズと効率で人気があります。 3)デスクトップ環境では、Linuxはさまざまなユーザーのニーズを満たすために、さまざまなデスクトップ環境を提供します。

Linuxの欠点には、ユーザーエクスペリエンス、ソフトウェア互換性、ハードウェアサポート、学習曲線が含まれます。 1.ユーザーエクスペリエンスは、WindowsやMacOほどフレンドリーではなく、コマンドラインインターフェイスに依存しています。 2。ソフトウェアの互換性は他のシステムほど良くなく、多くの商用ソフトウェアのネイティブバージョンがありません。 3.ハードウェアサポートはWindowsほど包括的ではなく、ドライバーは手動でコンパイルされる場合があります。 4.学習曲線は急で、コマンドラインの操作をマスターするには時間と忍耐が必要です。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
