我有一个应用程序,它使用gui来完成与用户的大多数接口.但是,我想有一个单独的终端窗口,我可以写入一些错误检查,原始值等.
我知道我可以使用system()命令生成一个新的终端,但我不知道是否可以进行交互.
在最好的情况下,我想有一个函数,它接受一个字符串(我知道的char数组……),然后将它打印到新生成的控制台窗口:
就像是:
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
}
最佳答案 >打开烟斗.
>叉子.
>在子进程中,关闭write end和exec到运行cat / dev / fd /< rdfd>的xterm.
>在父进程中,关闭读取结束并写入写入结束.
#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]转换为FILE *,您可以使用fprintf等.