gpt4 book ai didi

c - 进程使用 fork 运行 xterm 实例时出错

转载 作者:行者123 更新时间:2023-11-30 19:47:29 25 4
gpt4 key购买 nike

我被赋予了 fork n 个进程的任务。

对于每个进程,它必须启动一个/bin/xterm 实例

我已经完成了生成 n 个进程并打开 xterm 实例的部分。

当我尝试运行该程序时,我得到了这个输出。 (错误以粗体显示)

Number of process to open is 1.

Child (1): 3457

/bin/xterm: Xt error: Can't open display:

/bin/xterm: DISPLAY is not set

我的代码如下。

我尝试用谷歌搜索该错误,但到目前为止还没有运气。

有什么解决办法吗?

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[])
{
int num = atoi(argv[1]);
printf("Number of process to open is %d.\n", num);
int pid;
int i;

for(i = 0; i < num; i++)
{
pid = fork();
if(pid < 0) {
printf("Error");
exit(1);
} else if (pid == 0) {
printf("Child (%d): %d\n", i + 1, getpid());
char * const argv[] = {"/bin/xterm", NULL};
char * const envp[] = {NULL};
int rc = execve ("/bin/xterm", argv, envp);
exit(0);
} else {
wait(NULL);
}
}
return 0;
}

最佳答案

这个稍微改变的代码在我的系统上运行得很好:

    #include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int main(int argc, char *argv[])
{
int num = atoi(argv[1]);
printf("Number of process to open is %d.\n", num);
int pid;
int i;

for(i = 0; i < num; i++)
{
pid = fork();
if(pid < 0) {
printf("Error");
exit(1);
} else if (pid == 0) {
//printf("Child (%d): %d\n", i + 1, getpid());
//char * const argv[] = {"/bin/xterm", NULL};
//char * const envp[] = {NULL};
execl("/usr/bin/xterm", "/usr/bin/xterm", NULL);
//exit(0);
}else {
wait(NULL);
}
}
return 0;
}

关于c - 进程使用 fork 运行 xterm 实例时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21809332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com