linux检测有回显执行命令,通过dup2实现linux命令回显的捕获

前言

在bash代码中,看到关闭了一个fd后,屏幕上才出现linux命令执行后的回显内容.

做了一个试验,实现了回显数据的捕获。

实现思路:

dup2重定向stdin到自己建立的管道

select管道,如果有数据就读取管道中的数据,并转发. 如果超时,就跳出.

做了好久的试验,终于达到预期的效果了:)

demo

// @file main.cpp

// @note on fedora22 view syslog use 'journalctl -f'

// 'tail -f /var/log/message' is invalid

#include

#include

#include

#include

#include

#include

#include

#include

#include

// 日志级别 - 调试

#ifndef MYLOG_D

#define MYLOG_D(fmt, ...) \

do { \

syslog(LOG_INFO, "[%s : %s.%d : %s()] : " fmt, "LS_LOG", __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__); \

} while (0);

#endif // #ifndef MYLOG_D

void init(const char* psz_log_owner_name);

void uninit();

void proc_sig_term(int num);

int fn_test();

int main(int argc, char** argv)

{

char sz_buf[1024] = {'\0'};

#ifdef MAKE_FILE_MACRO__BIN_NAME

sprintf(sz_buf, "%s", MAKE_FILE_MACRO__BIN_NAME);

init(sz_buf);

MYLOG_D("MAKE_FILE_MACRO__BIN_NAME = [%s]", MAKE_FILE_MACRO__BIN_NAME);

#else

init(NULL);

#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值