gpt4 book ai didi

c - 从 shell 脚本向 C 程序发送输入

转载 作者:太空宇宙 更新时间:2023-11-04 04:29:57 25 4
gpt4 key购买 nike

<分区>

我有一个c程序它使用 tcgetattr 和 tcsetattr,停止回显用户输入。

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

int
main(int argc, char **argv)
{
struct termios oflags, nflags;
char password[64];

/* disabling echo */
tcgetattr(fileno(stdin), &oflags);
nflags = oflags;
nflags.c_lflag &= ~ECHO;
nflags.c_lflag |= ECHONL;

if (tcsetattr(fileno(stdin), TCSANOW, &nflags) != 0) {
perror("tcsetattr");
return EXIT_FAILURE;
}

printf("password: ");
fgets(password, sizeof(password), stdin);
password[strlen(password) - 1] = 0;
printf("you typed '%s'\n", password);

/* restore terminal */
if (tcsetattr(fileno(stdin), TCSANOW, &oflags) != 0) {
perror("tcsetattr");
return EXIT_FAILURE;
}

return 0;
}

我想使用 shell 脚本执行这个程序并给它一些输入。按照 here 中的步骤操作我试过了

$ ./test <<EOF
> hello
> EOF

$ ./test <<<'hello'

$ ./test <input 

$ cat input | ./test 

但所有上述方法都给我 tcsetattr: Inappropriate ioctl for device 错误

运行此类程序并将其添加到 shell 脚本的合适方法是什么?或者我们可以从 python 运行它吗?如果是,如何将输入从 python 传递到 c 程序?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com