39. TCP套接字之日志记录

本文介绍了如何在TCP通信中添加日志记录功能。通过管道实现进程间通信,使用单独的进程记录日志。详细讲解了利用带缓冲的文件写入函数确保日志数据能被正确保存,并讨论了日志记录的重要性及其在服务端的角色。同时,提到了管道在网络编程中的其他应用,如绑定输出和信号统一。
摘要由CSDN通过智能技术生成

前面我们实现了完整的TCP通信, 现在我们可以来考虑为通信加上日志记录的功能. 实现日志记录可以直接将数据写入文件中.


管道实现日志记录

这里采用管道实现进程间通信, 通过一个单独的进程来记录日志.

主要用到的就是文件的创建, 无名管道以及进程间通信的方法.


以下是删除了大部分的服务端代码, 只留下了修改过后的代码. 这里采用的是带缓冲的fwrite函数实现向文件里写入数据. 因为采用的fwrite是全缓冲, 所以在写完数据之后必须使用fflush函数将缓冲区的内容真正的写入到文件中. 如果没有这个步骤, 那么日志就不会有任何数据记录了.

void doService(int servicefd)
{
   
	...
        
    // 初始化管道, 保证进程间通信
    int fds[2];
    pipe(fds);

    pid_t pid;    
    if((pid = fork()) < 0)
	    exit(1);
    else if(pid == 0){
   
		FILE *fp;
		char buf[1024];
		int len;
		while(1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值