gpt4 book ai didi

c - 生成一个新终端并写入其标准输出

转载 作者:太空狗 更新时间:2023-10-29 15:38:30 25 4
gpt4 key购买 nike

我有一个应用程序使用图形用户界面来处理大部分与用户的界面。但是,我希望有一个单独的终端窗口,我可以写入该窗口以进行一些错误检查、原始值等。

我知道我可以使用 system() 命令生成一个新终端,但我不知道是否可以进行交互。

在最好的情况下,我希望有一个函数接受一个字符串(我知道的字符数组......),并将它打印到新生成的控制台窗口:

类似于:

int func(char *msg) {
static // initiate some static interface with a newly spawned terminal window.

// check if interface is still valid

// send data to terminal

return 0; //succes

}

最佳答案

  1. 打开管道。
  2. fork 。
  3. 在子进程中,关闭写端和execxterm运行 cat /dev/fd/<rdfd> .
  4. 在父进程中,关闭读端,向写端写入。
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <unistd.h>

int main(int argc, char **argv) {
(void)argc, (void)argv;

int fds[2];
if(pipe(fds) == -1) {
abort();
}

int child_pid = fork();
if(child_pid == -1) {
abort();
}

if(child_pid == 0) {
close(fds[1]);
char f[PATH_MAX + 1];
sprintf(f, "/dev/fd/%d", fds[0]);
execlp("xterm", "xterm", "-e", "cat", f, NULL);
abort();
}

close(fds[0]);
write(fds[1], "Hi there!\n", sizeof("Hi there!\n"));
sleep(10);
close(fds[1]);
sleep(3);

return EXIT_SUCCESS;
}

您可以使用 fdopenfds[1]进入 FILE *你可以使用 fprintf等等。

关于c - 生成一个新终端并写入其标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24522680/

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