您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在多线程应用程序中,如何按线程将stderr&stdout重定向到单独的文件中?

在多线程应用程序中,如何按线程将stderr&stdout重定向到单独的文件中?

如果您 必须这样做…

首先,您需要创建2pthread_key_ts,一个用于stdout一个用于stderr。这些可以使用创建pthread_key_create,并且必须可以从所有线程访问。我们称它们为stdout_keystderr_key

创建线程时:

FILE *err = ..., *out = ...;
pthread_setspecific(stdout_key, out);
pthread_setspecific(stderr_key, err);

然后在您的头文件中:

#define stdout (FILE*)pthread_getspecific(stdout_key)
#define stderr (FILE*)pthread_getspecific(stderr_key)
#define printf(...) fprintf(stdout, ##__VA_ARGS__)

然后只需使用:

fprintf(stderr, "hello\n");
fprintf(stdout, "hello\n");
printf("hello\n");

我不推荐这种方法

其他 2022/1/1 18:17:14 有633人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶