私は1つの他のプログラムのprintf()
を介在させるタスクを書いています.1つの子プロセスをフォークし、すべてのプログラムの出力を子プロセスにリダイレクトします。以下のコードは、私がまだ実行していないものを書いたものです。この関数を追加する必要があります。子プロセスをフォークして、すべてのプログラム出力を子プロセスにリダイレクトする方法はありますか?
int printf(char* format, ...)
{
int res;
static void *(*mallocp)(size_t size);
char *error;
if (!mallocp) {
mallocp = dlsym(RTLD_NEXT, "printf");
if ((error = dlerror()) != NULL) {
fputs(error, stderr);
exit(1);
}
}
va_list args;
va_start(args, format);
res=mallocp(format, args);
va_end(args);
return res;
}
私は1つの同様の解決策を見出しますが、少し異なります。 Redirect stdin and stdout in child in c 子プロセスをフォークしてパイプをうまく設定した後で、どうすれば親プロセスがシステム "printf" mallocp
に進み、子プロセスにリダイレクトされるべきstdoutを与えることができますか。 (この例ではsystem("./calc/calc ");
のようなものかもしれません)私はこの分野では新しいです。教えてくださいますか ?
私はプロセス全体の実装を理解できないのか分かりません。なぜならそれは1つの質問であり、私は公式の解決策を知らないからです。
あなたがこの方法を解決しようとしているproblem_ _actualは何ですか? –