好的,所以我正在使用 qt-C++ 程序从我的主机系统执行我的 SBC6845 中存在的程序./led.sh 。该程序基本上将我的 SBC 连接到我的主机系统。它相当于“超级终端”或“Minicom”。我从http://code.google.com/p/qextserialport/在“qextserialport-1.2rc.zip”中获得了这个程序(示例代码)“uartassistant” 。
我遇到了这个链接:Running shell command in QT c++ in ubuntu,同时搜索如何从 qt 程序内部执行 shell 命令。我尝试并成功执行了 ./led.sh。感谢链接。
我宣布
void someaction(); // in the dialog.h
然后在 dialog.cpp 我添加这个
connect(ui->pushButton, SIGNAL(clicked()), SLOT(someaction()));
还有这个
void Dialog::someaction()
{
QString command = "sh ./led.sh\r\n"; const char* command2;
command2 = command.toLocal8Bit().data();
port->write(command2);
我能够在我的 SBC 中进行 ledflash。
但是当我尝试停止./led.sh时出现问题,我无法在 uartassistant 中这样做(错误,需要修改,仍在工作)。但目前我正在尝试制作另一个 pushbutton_1 并在其中放入类似“Ctrl+Z”的内容并要求./led.sh停止。我遇到了一些其他链接,由于声誉点低,我无法放置这些链接。我不知道如何在 qt 应用程序中使用 SIGTERM / kill 选项[来自其他链接] 并在按钮单击时执行。假设我使用kill我将如何确定多个此类按钮操作的pidof并分配要杀死的人。
另外我想补充一点,我的 SBC 有灰 [Almquist shell]。所以它是 Bourne shell 的低内存克隆,我不知道它是否支持退出led.sh的正常命令。