ioLib文档解释了如何在运行时全局或按任务重定向stdio文件描述符,分别使用
有什么方法可以在运行VxWorks 7的iMX6上更改控制台端口吗?我知道如何通过内核配置来更改它,但这是一个编译时设置。有什么办法可以让我在跑步时换一下吗?
ioGlobalStdSet()
或ioTaskStdSet()
。您可以独立设置stdin、stout和stderr,因此需要设置这三个选项来重定向所有控制台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 heren" ) ;
}
还有ioGlobalStdGet()
和ioTaskStdGet()
功能,因此可以保留原始设置,并在必要时恢复它们。