Linux多进程并发下stdout,stderr重定向的问题

hukof10th 2014-05-08 12:53:00
大家好,我的问题是这样的,我需要在项目里面,建立两条管道用来重定向stdout和stderr,在统一个的一个进程读取,然后再写入文件/打印到屏幕/发送到远程服务端。
现在我的问题是,建立了这些管道以后,print出来的信息之间会互相穿插吗?
比方说
进程A:
printf("i am AAA!\n");
进程B:
printf("i am BBB!\n");
会打印成:
ii amam AABBAB!!
这种情况吗?

我要怎样才能保证输入管道的数据流是以我希望的顺序进去的?
...全文
339 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhxianbin 2014-05-08
  • 打赏
  • 举报
回复
printf 不是线程安全的 http://www.oschina.net/question/234944_78979
zhxianbin 2014-05-08
  • 打赏
  • 举报
回复
引用 2 楼 u010956692 的回复:
[quote=引用 1 楼 zhxianbin 的回复:] printf 不是线程安全的 http://www.oschina.net/question/234944_78979
我又没有办法不修改代码仅仅通过重导向成功实现这个功能?[/quote] 使用 互斥锁 pthread_mutex_t
hukof10th 2014-05-08
  • 打赏
  • 举报
回复
引用 1 楼 zhxianbin 的回复:
printf 不是线程安全的 http://www.oschina.net/question/234944_78979
我又没有办法不修改代码仅仅通过重导向成功实现这个功能?

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧