这里有一些用于产生和与linux上的终端程序(以及可能的其他unix)进行通信的C样板
int master, slave;
struct winsize wsize = {24, 80, 0, 0}; // 24 rows and 80 columns
if (openpty(&master, &slave, NULL, NULL, &wsize) < 0)
die("Failed to open the pty master/slave");
if (!fork()) {
// child, set session id and copy the pty slave to std{in,out,err}
setsid();
dup2(slave, STDIN_FILENO);
dup2(slave, STDOUT_FILENO);
dup2(slave, STDERR_FILENO);
close(master);
close(slave);
// then use one of the exec* variants to start executing the terminal program
}
// parent, close the pty slave
close(slave);
// At this point, we can read/write data from/to the master fd, and to the child
// process it would be the same as a user was interacting with the program
我知道Windows没有fork()
或openpty()
,所以我的问题是:如何在Windows上实现类似的功能?
如果可能,我希望看到执行以下操作所需的最低工作C / C ++代码量:
CreateProcess
答案 0 :(得分:0)
Windows控制台与Linux控制台的工作方式非常不同。窗口中没有用于生成或连接的PTY或虚拟控制台。你基本上在Windows控制台本身工作。
然后,您将处理您自己的所有I / O以模拟终端,跟踪控制台作为您的窗口,x / y位置坐标,颜色等。
如果您对基于文本的界面感兴趣,可以查看类似于PDcurses for windows的内容。