Linux下用命名管道来调试

背景


在项目中需要实现在程序运行时动态更改摄像头曝光值,一个终端运行应用程序,另外开一个终端来向程序发送更改变量的指令。

实现方式

通过有名管道实现

应用程序中的代码
/*********************************************
函数名:debug_thread
描述:调试线程函数,创建名为“C”的管道,在另一个终端输入 echo xxx > C 就可以设置相关摄像头参数
     其中XXX为:
     B -> 曝光   eg: B 50
     F -> 分辨率 eg: F 640 480
输入:
输出:
返回值:
*********************************************/
void* Debug::debug_thread(void* arg)
{
   FILE* fifo_fd;
   char debug_info[64] = {0};
   cout << "Enter debug thread" << endl;
   unlink( "C" );
   if(0 !=mkfifo( "C", O_RDWR|O_CREAT|O_TRUNC ))
   {
   	cout << "mkfifo error" << endl;
   	return NULL;
   }
   
   while(1)
   {
   	 fifo_fd = fopen( "C", "r");
   	if(NULL == fifo_fd)
   	{
   		cout << "can not open pip file" << endl;
   		break;
   	}
   	if(0 == fgets( debug_info, 64, fifo_fd))
   	{
   		fclose(fifo_fd);
   		continue;
   	}
   	//delete '\n'
   	debug_info[strlen(debug_info) - 1] = 0;
   	cout << "nihao " << debug_info << endl;
   	del_dbg_cmd(debug_info, strlen(debug_info)-1);
   	fclose(fifo_fd);
   }
   return NULL;
}

在另一个终端输入

echo xxx > C

可以看到程序所在终端收到了指令,后面进行解析就行。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值