在linux内核中的/kernel目录下printk.c文件轿顷中有一个函数:
static void __call_console_drivers(unsigned long start, unsigned long end)
{
struct console *con
for (con = console_driversconcon = con->next) {
if ((con->flags &CON_ENABLED) &&con->write)
con->write(con, &LOG_BUF(start), end - start)
}
}
去掉如下两行重新编译内核即可:
if ((con->flags &CON_ENABLED) &&con->write)
con->write(con, &LOG_BUF(start), end - start)
2、标闭胡陆准输出、标准错误输出重定向
int main() {
int pid = 0
// fork a worker process
if (pid = fork()) {
// wait for completion of the child process
int status
waitpid(pid, &status, 0)
}
else {
// open /dev/null
int fd_null = open("/dev/null",O_RDWR)
if(dup2(fd_null, 1) == -1)
return 1
if(dup2(fd_null, 2) == -1)
return 1
XX_run()
}
return 0
}
我将标准输出和错误输出重定向到/dev/null中
如果我没有将输出重定向,只是关闭输出,close(1) close(2),程序经常出做迹现错误,这个还需要继续研究。
虚拟机中的串口连接可以采用两种方法。一种是指定虚拟机的串口连接到实际的COM上,例如开发机连接到COM1,目标机连接到COM2,然后把两个串口通过串口线相连接。另一闹慎种更为简便的方法是:在较高一些版本的VMware中都支持把串口映射到命名管道,把两个虚拟机的串口映射到同一个命名管道。例如,在两个虚拟机中都选定同一个命名管道\\.\pipe\com_1,指定target机的COM口为server端,并选择"Theotherendisavirtualmachine"属性;指定development机的COM口端为client端,同样指定COM口的"Theotherendisavirtualmachine"属性。对于IOmode属性,在target上选中"YieldCPUonpoll"复选择框,development机不选。串口是开发者经常要使用到的,我们有些时候需要使用windows开发,然而window装在了虚拟机中,我们怎么样肢型在虚拟机中使用串口呢?1、在virtualbox中选择启用串口,端口模式选择Hostdevice.由于现有两个系统但是只有一个物理串口,所以虚拟机要通过主机的串口文件间接获取数据,主机是linux,串口设备为/dev/ttyS02、端口/文件位置一栏填入:/dev/ttyS0,历弯猜启动虚拟机。3、如果无法启动虚拟机,很有可能是没有对ttyS0设备的读写权限,(可以ls-l/dev/ttyS0查看以下权限)于是我们要修改ttyS0的权限,在终端中输入:sudochmod777/dev/ttyS0这样就将ttyS0的所有权限都打开了。启动虚拟机,这时候就可以在虚拟机中(winXP)使用串口了欢迎分享,转载请注明来源:内存溢出
评论列表(0条)