当前位置: 技术问答>linux和unix
如何获取终端的输出信息
来源: 互联网 发布时间:2016-12-06
本文导语: #su //在此执行su命令 #password: //此处现检测一下终端输出的是不是"password:" 这个字符串,如果是的话在终端输入密码,如果不是的话返回-1(出错) 请问上面的两行命令如何用c...
#su //在此执行su命令
#password: //此处现检测一下终端输出的是不是"password:" 这个字符串,如果是的话在终端输入密码,如果不是的话返回-1(出错)
请问上面的两行命令如何用c语言来实现啊? 我是这样写的,好像不行
#include
#include
int main()
{
FILE *fd=tmpfile();
char output[1024]="";
fd = popen("su", "r");
fread(output, 1024, 1, fd);
if (strcmp(output,"password:") == 0)
{
fprintf(stderr, "%s", "12345678");
}
else
{
return -1;
}
}
执行上面的程序后没有任何输入信息,程序一直停留在
fd = popen("su", "r") 这一行不再继续往下执行了,我知道原因肯定是su这个终端命令没有执行完,所以会一直停留在这个地方,大家有什么好的办法可以实现啊?
#password: //此处现检测一下终端输出的是不是"password:" 这个字符串,如果是的话在终端输入密码,如果不是的话返回-1(出错)
请问上面的两行命令如何用c语言来实现啊? 我是这样写的,好像不行
#include
#include
int main()
{
FILE *fd=tmpfile();
char output[1024]="";
fd = popen("su", "r");
fread(output, 1024, 1, fd);
if (strcmp(output,"password:") == 0)
{
fprintf(stderr, "%s", "12345678");
}
else
{
return -1;
}
}
执行上面的程序后没有任何输入信息,程序一直停留在
fd = popen("su", "r") 这一行不再继续往下执行了,我知道原因肯定是su这个终端命令没有执行完,所以会一直停留在这个地方,大家有什么好的办法可以实现啊?
|
apue 里面有一个专门的章节讲“伪终端”
expect 程序本身也是利用了伪终端技术,就是模拟一个用户的终端交互过程
expect 程序本身也是利用了伪终端技术,就是模拟一个用户的终端交互过程