我需要使用execlp calls ()
中的多个显示。我正在尝试这个:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("calling to execlp:\n\n");
execlp("DISPLAY=:0 /usr/bin/qtdisplay","qtdisplay", "-r", NULL);
execlp("DISPLAY=:1 /usr/bin/qtdisplay","qtdisplay", "-r", NULL);
printf("fail!");
exit(0);
}
但是这失败了,并显示以下消息:execlp: No such file or directory
有没有办法使用显示器?
答案 0 :(得分:0)
尝试使用system()
,它会启动一个新的子进程并从那里调用exec()
。此外,它通过调用shell并将shell构造处理到该shell来处理shell命令行构造,如下所示:
system("DISPLAY=:0; /usr/bin/qtdisplay -r");
另外,学会检查这样的函数的返回代码,并做一些理智的操作(比如打印错误信息):
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int rc;
rc = system("DISPLAY=:0; /usr/bin/qtdisplay -r");
if (rc == -1) {
perror("error starting qtdisplay on :0");
exit(1);
}
rc = system("DISPLAY=:1; /usr/bin/qtdisplay -r");
if (rc == -1) {
perror("error starting qtdisplay on :1");
exit(1);
}
exit(0);
}
如果您希望这两个命令并行运行(不是一个接一个),您应该使用如下命令行:
system("DISPLAY=:0; /usr/bin/qtdisplay -r &");