Qt/QML是很适合开发有触摸屏等嵌入式环境下的GUI界面的,对于这种系统,显然光有华丽的界面还不行,必然会涉及调用底层系统及硬件BSP。对于VC来说,消息都是轮询的,就是有个while 处理消息的dispatch,而Qt/QML采用的是D-BUS的方式,不是强耦合强轮训的,而是总线式。那么底层系统功能调用如何实现呢?一般Qt/QML会在某些操作系统下实现,比如QNX、Linux、Android等,作为系统有一些shell脚本、底层硬件驱动、文件系统、多进程等支持Qt的界面实现。
popen
Popen命令会启动内核,调用内核shell命令。
Qt实现如下:
int executeShellCmd(const char* cmd)
{
FILE *fp;
char result[256]={0};
if((fp = popen(cmd,"r"))== NULL)
{
printf("ShellCmd error\n");
return -1;
}
while(fgets(result,sizeof(result),fp)!=NULL)
{
printf("result:%s\n",result);
}
pclose(fp);