qq拼音开机自己启动动两个QT

下次自动登录
现在的位置:
& 综合 & 正文
开机自动启动自己编写的QT程序
建立好QT运行环境后,要运行自己编写的基于QT/E的图形界面程序,一般需要在终端输入命令才能运行,并且第一个运行的QT程序要加上
-qws 参数。以下方法可以让QT程序在开机的时候自动启动,并作为守护进程在后台运行。由于QT程序的运行环境需要配置tslib和qt相关的环境变量,所以在启动QT程序前要保证程序的运行环境已经设置好了相应的环境变量。嵌入式下设置环境变量可以有几种方法:第一,加入/etc/profile文件,这里的设置将会影响所有的登录用户。第二,在执行脚本里面设置环境变量,并在脚本内执行程序,脚本执行结束后环境变量将只被脚本内启动的程序拥有,其他地方不可见,该程序的子程序也将继承这些环境变量。下面是一个自启动QT程序的例子:可执行文件:clock
是一个用QT编写的模拟时钟界面,如果直接将clock作为图形服务程序运行,理论上是可以,但是经过实验发现第一次启动clock通常会失败,第二次才会成功,原因可能是该程序比较庞大,不适合作为图形服务程序。(更深层次的原因就不清楚了~~~)为了解决这个问题,单独使用一个空界面的QT程序basicqt先作为图形服务程序启动,然后再启动clock。成功~~使用过程如下:(0)编写basicqt程序,作为图形服务程序:#include &QApplication&int main (int argc, char *argv[]){
QApplication app(argc, argv);
return app.exec();} (1)编写basicqt.sh脚本,用来启动basicboot:#!/bin/sh
#configure for tslib
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH
#configure for qt
export QTDIR=/usr/local/qtlib/
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH=$QTDIR/bin:$PATH
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
/opt/basicboot 1&/dev/null 2&/dev/null
(2)编写basicboot.c程序,用来使basiqt作为守护进程运行:#include &stdio.h&#include &stdlib.h&#include &unistd.h&#include &fcntl.h&int main (int argc, char *argv[]){
printf("running clock...\n");
pid = fork();
if (pid & 0){
perror("fork");
if(pid != 0){
if(pid == 0){
chdir("/");
fd = open("/dev/null", O_RDWR);
if(fd != -1){
dup2(fd, STDIN_FILENO);
dup2(fd, STDOUT_FILENO);
dup2(fd, STDERR_FILENO);
if(fd & 2){
close(fd);
umask(0027);
char const *bp[] = {"basicqt", "-qws"};
execv("/opt/basicqt", bp);
return 0;}(3)在/etc/init.d/rcS中加入脚本执行语句
/opt/basicqt.sh (4)编写clock.sh脚本,用来启动clockboot程序:#!/bin/sh
#configure for tslib
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH
#configure for qt
export QTDIR=/usr/local/qtlib/
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH=$QTDIR/bin:$PATH
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
exec /opt/clockboot 1&/dev/null 2&/dev/null
(5)同样编写clockboot.c程序,让clock成为守护进程,区别在于运行clock时就不用加-qws参数了。(6)在/etc/init.d/rcS中加入脚本执行语句
/opt/clock.sh 启动流程:(1)init 进程读取/etc/init.d/rcS文件,启动/opt/basicqt.sh(2)执行basicqt.sh:设置环境变量,启动basicboot程序。(3)执行basicboot程序:将basicqt程序作为守护进程运行,并使用-qws参数。(4)init 进程读取/etc/init.d/rcS文件,启动/opt/clock.sh(5)执行clock.sh:设置环境变量,启动clockboot程序。(6)执行clockboot程序:将clock程序作为守护进程运行,不用-qws参数。(7)完成。这里两个脚本设置的环境变量只是传递给了两个启动的程序,最终被分别传递给了两个守护进程,其他地方是不可见的。因此虽然这里可以启动QT程序了,但是在终端下面输入命令运行QT程序还是不成功的,因为终端下面没有设置环境变量。要想设置终端的环境变量需要将环境变量加入/etc/profile文件。
&&&&推荐文章:
【上篇】【下篇】您所在的位置: &
QT语音怎么关闭开机启动
时间: 17:40:58
编辑:xwgod
来源:下载吧
QQTalk(QT语音通信工具)是一款支持多人语...
  我们***了腾讯的QT语音软件,但是已启动电脑,QT语音就会一起启动,这样就有些不爽了,我们来了解下如何关闭它的自己启动。  首先打开自己***好的QT语音,用自己的QQ帐号登录QT语音  在右上的下拉小箭头下选择系统设置  左边的热键设置里,把开机时自己启动的钩去掉,这样就可以了  也可以通过第三方安全软件来关闭启动,比如说打开360安全位置,选择优化加速  在启动里把QT语音禁用掉即可。
分享给朋友:
QT语音怎么关闭开机启动相关教程
下载1806次
下载1790次
下载1089次
下载1516次
下载1195次
热门关键字

参考资料

 

随机推荐