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

2024-05-14

我有一个应用程序,它使用 GUI 来完成与用户的大部分界面。不过,我想要一个单独的终端窗口,我可以写入一些错误检查、原始值等。

我知道我可以使用以下命令生成一个新终端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. 在子进程中,关闭写端并exec to an xterm跑步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;
}

您可以使用fdopen转动fds[1] into a FILE *你可以使用fprintf等等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生成一个新终端并写入其标准输出 的相关文章

随机推荐