Cómo ejecutar shell o programa externo en QT
El primer método (línea 50) es llamar al sistema(const char *string) en la biblioteca C de Linux;
El segundo método (línea 51) y el tercer método (línea 53 54) son funciones que llaman a QT;
Cabe señalar que los tres métodos anteriores se pueden implementar, pero los dos primeros métodos. bloqueará el proceso hasta que se ejecute smplayer.
Los dos primeros métodos bloquean el proceso hasta que finaliza el programa smplayer, mientras que el tercer método no bloquea el proceso y permite realizar múltiples tareas.
Además, sabemos que cuando ejecutamos qt, necesitamos iniciar qws (servidor qtwindows), si usamos los dos primeros métodos, cuando smplayer se esté ejecutando, necesitamos abrir un nuevo qws, de lo contrario No se podrá ejecutar; cuando usemos el tercer método, no necesitamos abrir un nuevo qws, y usa un qws junto con HelloQt4 ****, para que pueda ver dos programas en una ventana al mismo tiempo.
2. Cree un nuevo script de ejecución para iniciar el reproductor smplayer
En el paso anterior, el programa qt ejecutará el script
/opt/run_smplayer, pero este script no existe, debemos crearlo, abrir el directorio /opt de la placa de desarrollo, crear un nuevo archivo run_smplayer y agregar el siguiente contenido
#! /bin/sh
#Testing
#cd /opt/
#rm qt_create/
-rf
#sleep 3
#mkdir qt_create
#cd qt_create
# mkdir qt_create1
#cd qt_create1
#mkdirqt_create2
#cd qt_create2
#mkdir ok
#Haz una llamada directa a mplayer para reproducir el archivo gq.avi.
#cd /usr/local/smplayer/bin
#./mplayer /sdcard/gq.avi
#Iniciar smplayer amigable
cd /usr/local/smplayer/bin
./smplayer
3 Modificar el archivo smplayer
En el sistema de archivos raíz amigable, /user. / Hay un problema con el script smplayer en el directorio lical/smplayer/bin. Si lo ejecutas directamente, el mouse y la pantalla táctil
no funcionarán. Debemos cambiar el directorio /bin, copiarlo. script smplayer y elimine las dos últimas líneas del archivo qws. (Como se mencionó anteriormente, realizaremos múltiples tareas, por lo que no es necesario iniciar otro
qws).
exportar HOME=/root
cd /usr/local/smplayer/
exe__c ./smplayer #-qws 1gt;/dev/null
2gt;/dev/null
// Aquí hay una palabra protectora, verdadera sin subrayar
#hotplug
4 Modificar el archivo rcS. para ejecutar el programa HelloQt4i inmediatamente después de iniciar la computadora
El archivo rcS es el siguiente:
#!
/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
exportar RUTA nivel de ejecución prevlevel
#
# Trampa CTRL-C amp; c
solo en
este shell para que
podamos interrumpir los subprocesos.
#
trap ":" INT QUIT TSTP
/bin/hostname Crt
[ -e /proc/1 ]
||
/bin/mount -n -t proc none
/proc
[ -e / sys/class ]||
/bin/mount - n -t sysfs ninguno /sysfs ninguno
/bin/mount -n -t proc ninguno
/proc
[ -e / sys/class ]| |
/bin/mount -nt sysfs none /sys
[ -e /dev/tty ]
|
/bin /mount
-t ramfs
ninguno /dev
/ bin/mount -n -t usbfs ninguno
/proc/bus /usb
echo /sbin/mdev gt;
/proc/sys/kernel/hotplug
/sbin/mdev -s
/bin/ hotplug
# sistema de archivos de montaje especificado en
/etc/fstab
mkdir -n -t usbfs none
/proc/bus/usb
echo /sbin/mdev gt.p /dev/pts
mkdir -p /dev/shm
/bin/mount -n -t devpts ninguno
/dev/pts -o mode=0622
/bin/mount -n -t devpts ninguno
/dev/pts -o modo=0622
/bin/mount -n -t tmpfst tmpfs tmpfs /dev/shm
<p>/bin/mount
-n
t ramfs
ninguno /tmp
/bin/mount -n -t ramfs ninguno
/var
mkdir -np /var/empty
mkdir -p /var/log
mkdir -p /var /lock
mkdir -p /var/ run
mkdir -p /var/tmp
/sbin/hwclock -s
syslogd
/etc/rc.d/init.d/netd start
echo "
"
gt;
/dev/tty1
echo "Iniciar networking..."
gt;
/dev/tty1
dormir 1 p>
/etc/rc.d/init.d/httpd start
echo "
"
gt;
/dev/tty1
echo "Iniciar el servidor de red..."
gt;
/dev/tty1
dormir 1
/etc/rc.d/init.d/leds start
echo "
"
gt;
/dev/tty1
echo "Iniciar servicio de leds..."
gt;
/dev/tty1
echo "
"
dormir 1
echo "
"
gt;
p>
/dev/tty1
/etc/rc.d/init.d /alsaconf start
echo "Cargando configuración de tarjeta de sonido..."< / p>
gt;
/dev/tty1
echo "
"
/sbin/ifconfig lo 127.0. 0.1
/etc/init.d/ifconfig-eth0
#/bin/qt4 amp;
#echo "
"
gt;
/dev/tty1
#echo "Inicie la aplicación Qt4, por favor
espera..." p>
gt;
/dev/tty1
#/bin/smplayer amp;
#echo "
"
gt;
/dev/tty1
#echo "Por favor, inicia la aplicación smplayer
Espera..."
gt;
/dev/tty1
/bin/hello_qt4app amp;
echo "
"
gt;
/dev/tty1
echo "Iniciar
aplicación hello_qt4, por favor
espera..."
gt;
/dev/tty1
hola_qt4ap
p El guión es el siguiente:
#! /bin/sh
rm /root/.config/
-rf;
rm /root/.mplayer/
- rf;
si [ -e /etc/friendlyarm-ts-input.conf ] ; entonces
./etc/friendlyarm-ts-input.conf
fi
verdadero
${TSLIB_TSDEVICE:=/dev/touchscreen}
TSLIB_CONFFILE=/etc/ts.conf
exportar TSLIB_TSDEVICE
exportar TSLIB_CONFFILE
exportar TSLIB_PLUGINDIR=/usr/lib/ts
exportar TSLIB_CALIBFILE=/etc/ pointercal
exportar QWS_DISPLAY= :1
exportar LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
exportar PATH=/bin:/sbin:/usr /bin/:/usr/sbin:/usr /local/bin
if [ -c /dev/touchscreen ]; entonces
exportar
QWS_MOUSE_PROTO="Tslib:${TSLIB_TSDEVICE}
MouseMan:/dev/input/mice"
if [
-e
/etc/pointercal -a !
-s
/etc/pointercal ]; luego
rm
/etc/pointercal
fi
else
export
QWS_MOUSE_PROTO=" MouseMan:/dev/input/mice"
gt;/etc/pointercal p> p>
fi
exportar QWS_KEYBOARD=TTY:/dev/tty1
exportar HOME=/root
cd /opt
./hello_qt4
-qws
1gt;/dev/null
2gt;/dev/null
hotplug
Luego, reinicie la placa de circuito, se ejecuta el programa hello_qt4, luego haga clic en el botón y aparecerá el reproductor.