これは、提案されたソリューションにアプローチする方法の単なる提案です。あなたが尋ねている2つの特定の行動について:
touch
:タッチしたいファイルを開閉することで同様の効果が得られます
O_TRUNC
フラグを使用しないように注意してくださいopen
ls
dirent.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番目の関数パラメーターに従って)、ヘルパープログラムを呼び出すための引数ベクトルを作成し、適切なファイル記述子番号とコマンド文字列を引数として渡します。stdout
stdin
popen
- あなたが電話した後、あなたは子供のヘルパープログラム
vfork
をすぐに行いますexec
pclose
子プロセスを取得するには、交換が必要です