在运行VxWorks 7的iMX6上,是否有任何方法可以更改其控制台端口?我知道如何通过内核配置更改它,但这是一个编译时间设置。我可以在运行时更改它吗?
答案 0 :(得分:1)
ioLib documentation说明了如何在运行时分别使用ioGlobalStdSet()
或ioTaskStdSet()
在全局或每个任务的基础上重定向stdio文件描述符。您可以分别设置stdin,stout和stderr,因此您需要设置所有三个来重定向 all 控制台I / O。
例如:
#include <ioLib.h>
int redirectStdio( const char* devname )
{
int new_io_fd = open( devname, O_RDWR, 0 ) ;
if( new_io_fd >= 0 )
{
ioGlobalStdSet( STD_IN, new_io_fd ) ;
ioGlobalStdSet( STD_OUT, new_io_fd ) ;
ioGlobalStdSet( STD_ERR, new_io_fd ) ;
}
return new_io_fd ;
}
那么您可能会有:
if( redirectStdio( "/tyCo/2" ) < 0 )
{
printf( "Redirect failed - still here!\n" ) ;
}
else
{
printf( "stdio now directs here\n" ) ;
}
还有ioGlobalStdGet()
和ioTaskStdGet()
函数,因此可以保留原始设置并在必要时进行恢复。例如