C++ 在终端上处理用户输入,以便通过C+中的exec启动应用程序+;

C++ 在终端上处理用户输入,以便通过C+中的exec启动应用程序+;,c++,unix,terminal,exec,ipc,C++,Unix,Terminal,Exec,Ipc,如果没有将/p作为命令行参数提供,xfreerdp将要求输入密码;当通过终端启动时 但当它通过execvp或exec启动时,是否没有提示 如何显示此提示?有没有一种方法可以让我通过编程直接在提示符下输入密码 在Mac中使用swift使用任务和管道自动处理相同的问题。如何在C++中实现 有没有一种方法可以让我通过编程直接在提示符下输入密码 使用popen()的示例(用C编写) #include <stdio.h> #include <stdlib.h> int main(

如果没有将/p作为命令行参数提供,xfreerdp将要求输入密码;当通过终端启动时

但当它通过execvp或exec启动时,是否没有提示

如何显示此提示?有没有一种方法可以让我通过编程直接在提示符下输入密码

在Mac中使用swift使用任务和管道自动处理相同的问题。如何在C++中实现 有没有一种方法可以让我通过编程直接在提示符下输入密码

使用
popen()
的示例(用
C
编写)

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

int main(void) {
    const char *cmd = "xfreerdp";
    char output[128] = {'\0'};
    const char *arg = "myargs";    

    // Open process
    FILE *fp = popen(cmd, "w");
    if (!fp) {
        fprintf(stderr, "Could not execute command ...\n");
        exit(EXIT_FAILURE);
    }

    // Pass arguments
    if (fprintf(fp, "%s", arg) < 0) {
        puts("Could not pass arguments ...");
    }

    // Print command output (if required)
    while (fgets(output, sizeof(output), fp) != NULL) {
        puts(output);
    }

    pclose(fp);

    return 0;
}
#包括
#包括
内部主(空){
const char*cmd=“xfreerdp”;
字符输出[128]={'\0'};
const char*arg=“myargs”;
//开放过程
文件*fp=popen(cmd,“w”);
如果(!fp){
fprintf(stderr,“无法执行命令…\n”);
退出(退出失败);
}
//传递参数
如果(fprintf(fp,“%s”,arg)<0){
puts(“无法传递参数…”);
}
//打印命令输出(如果需要)
while(fgets(output,sizeof(output,fp)!=NULL){
投入(产出);
}
pclose(fp);
返回0;
}

如果所有其他操作都失败,您可以尝试使用
popen()
。(如果时间允许,我们将很快尝试分享示例。)