> 文档中心 > QT的system函数实现在qt代码里面执行脚本语言

QT的system函数实现在qt代码里面执行脚本语言

函数原型:

#include int system(const char *command);

作用:system()通过调用/bin/sh-c命令执行命令中指定的命令,并在命令完成后返回。在命令执行期间,SIGCHLD将被阻止,SIGINT和SIGQUIT将被忽略。执行错误将会返回-1

通俗来讲就是可以利用system函数执行shell终端命令,比如我们在linux终端敲打的ls 文件名的命令,在这里用system("ls test.txt");也可以做到。

补充1:说明一下这里提到的信号

产生方式 产生结果
SIGINT 键盘Ctrl+C 只对当前前台进程,和他的所在的进程组的每个进程都发送SIGINT信号,之后这些进程会执行信号处理程序再终止.
SIGQUIT 在Linux上,也可以使用Ctrl-4 是当用户请求进程执行核心转储时由其控制终端发送到进程的信号

那么对于SIGCHLD信号来说,只有在以下三个条件中才会向父进程发送SIGCHLD信号:

1. 子进程终止时

2. 子进程接收到SIGSTOP信号停止时

3. 子进程处在停止态,接受到SIGCONT后唤醒时

补充2:在QT中使用脚本语言还有其他方式,比如

(1)QProcess:execute("ls");

(2)QProcess *process = new QProcess();

process->start("ls");

QProcess的方式不会阻塞,而其他两种会阻塞直到命令执行完。