これは、提案されたソリューションにアプローチする方法の単なる提案です。あなたが尋ねている2つの特定の行動について:
touch:タッチしたいファイルを開閉することで同様の効果が得られます
O_TRUNCフラグを使用しないように注意してくださいopen
lsdirent.h: POSIXシステムで
使用し、結果を確認する必要があるため、もう少し面倒です。
opendir
readdir
- 終わったら必ず電話
closedirしてください
systemとpopen呼び出しをを使用して同等のものに置き換えたい場合vforkは、注意が必要です。子が呼び出しの直後vfork以外のことを行うと、親のメモリ状態が破損する可能性があるため、呼び出しの使用には少し注意が必要です。exec
あなたの代わりにsystem:
- 引数で指定された文字列を実行するヘルパープログラムを作成します
- ヘルパープログラムは
system、指定された引数を呼び出すか、コマンド文字列を解析して呼び出すことができますexec
- 置換関数で
system、ヘルパープログラムを呼び出す引数ベクトルを作成し、このプログラムの引数として実際に実行するプログラム文字列を渡します。
- あなたが電話した後
vfork、あなたはすぐexecに子供のヘルパープログラム
- 親は子が完了するのを待ちます
popen代わりに:
stdoutおよびファイル記述子を引数として受け入れるヘルパープログラムとstdin、実行するコマンドの文字列を作成します
- ヘルパープログラムは、引数で示されているように、渡された記述子を、
0または1(または両方)に複製します。
popenヘルパープログラムは、親と子の間でデータをプロキシして文字列を実行するかexec、コマンド文字列を解析した後に呼び出すことができます。
popen置換関数で、または通信チャネルpipeを作成し(2番目の関数パラメーターに従って)、ヘルパープログラムを呼び出すための引数ベクトルを作成し、適切なファイル記述子番号とコマンド文字列を引数として渡します。stdoutstdinpopen
- あなたが電話した後、あなたは子供のヘルパープログラム
vforkをすぐに行いますexec
pclose子プロセスを取得するには、交換が必要です