嵌入式服务器boa移植成功后,如果想要在boa源码某一处打印数据到串口或者其他输出端,是没办法使用printf函数的,这是由于boa.c文件中main函数中
if(dup2(devnullfd, STDOUT_FILENO) == -1) {
DIE("can't dup2 /dev/null to STDOUT_FILENO");
}
这段代码造成的。只要修改成
int dupfd;
dupfd = dup(STDOUT_FILENO);
if(dupfd == -1) {
DIE("can't dup STDOUT_FILENO");
}
close(STDOUT_FILENO);
int dup2fd;
dup2fd = dup2(devnullfd, STDOUT_FILENO);
if(dup2fd == -1) {
DIE("can't dup2 STDOUT_FILENO");
}
if(dup2(dupfd, dup2fd) == -1) {
DIE("can't dup2 /dev/null to STDOUT_FILENO");
}
就可以在任意处使用printf函数了。
我修改时参考的文章在下面的链接中。