stdout
とstderr
の両方をCプログラムの単一のファイルにリダイレクトしようとしています。stdoutとstderrの両方を1つのファイルにリダイレクトしてメッセージの順序を維持する
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int redirectOutputs();
int main()
{
redirectOutputs();
printf("OUT : test\n");
perror("ERR : test");
printf("OUT : test 2\n");
int t = 23;
printf("OUT : again\n");
perror("ERR : again");
}
int redirectOutputs()
{
int log = open("err.log", O_RDWR|O_CREAT|O_APPEND, 0600);
if (log == -1)
{
perror("opening err.log");
return -1;
}
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
dup2(log, STDOUT_FILENO);
dup2(log, STDERR_FILENO);
close(log);
}
し、出力ファイル:
は、ここに私のコードです彼らは両方ともうまくリダイレクトされ
ERR : test: Success
ERR : again: Success
OUT : test
OUT : test 2
OUT : again
が、すべてのstderr
が書かれているようですし、すべてのstdout
。 ファイル内のメッセージの順序を保持したいと思います。 私は、次のファイルを持っている必要があります:あなたは私のコードに問題が何であるかを知っていますかに
OUT : test
ERR : test: Success
OUT : test 2
OUT : again
ERR : again: Success
を?
出力がバッファされていますか?あなたの助けのための ' –