Передача пользовательского ввода на терминале для приложения, запущенного через exec в C ++ - PullRequest
0 голосов
/ 05 июля 2018

xfreerdp запрашивает пароль, если / p не указан в качестве аргумента командной строки; при запуске через терминал.

Но когда он запускается через execvp или exec, подсказки нет?

Как показать это приглашение? Есть ли способ, где я могу напрямую ввести пароль на приглашение программно?

То же автоматически обрабатывается в Mac с помощью swift, используя задачи и каналы. Как это сделать в C ++.

1 Ответ

0 голосов
/ 05 июля 2018

Есть ли способ, с помощью которого я могу напрямую ввести пароль на приглашение?

Пример (записан в C) с использованием popen() ...

#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;
}
...