13
373
2037
vipMem
管道实现 passwd 交互的问题 可以使用 管道调用 passwd命令 输入参数,更改密码。 但是不能得到passwd的返回结果,这怎么知道我的密码修改成功了。。。 头大了。 问题: 管道======》passwd (已经成功了) 管道《======passwd(怎么做????)
呵呵,先不看返回值,直接在本机登录一下看看密码改对了没有就知道啦。
能改密码,本机试过了。 但是没返回值,无法判断是否成功。。 我的相关代码: #include <stdio.h> int main() { int i; FILE* pfPass1 = popen( "/usr/bin/passwd --stdin eminem112", "w" ); FILE* pfPass2 = popen( "/usr/bin/passwd ", "r" ); if( NULL == pfPass1 || NULL == pfPass2 ) { printf("error"); return -1; } const char* lp[2] = {"**********\n","***********\n"}; char* lq; for( i = 0; i < 2; i++ ) { sleep(2); printf(" %s ",lp ); fputs( lp, pfPass1 ); // fgets( lq,128, pfPass2 ); // printf(" %s ", *lq ); } pclose( pfPass1 ); pclose( pfPass2 ); }
这样不就 不能在界面上打出修改成功的提示对话框了吗??
修改肯定成功了: passwd : all authentication tokens updated successfully.
#include <stdio.h> int main(int argc, char *argv[]) { char buf[128]; FILE *pp; if( (pp = popen("ls -l", "r")) == NULL ){ printf("popen() error!\n"); exit(1); } while(fgets(buf, sizeof(buf), pp)){ printf("%s", buf); } pclose(pp); return 0; }
ldpsl兄 请问 popen("ls -l", "r") 是什么意思?? 我看不太懂
popen("ls -l", "r") 我只知道 ls -l 是调用passwd的 但是ls -l 能回显出我更改密码后的成功提示吗?? 我试试 谢谢指导。
就是执行ls -l啊。
谢谢 ldpsl 和BOSS 我知道你们的意思了。 只要返回不为空,就是验证了密码修改正确了。 不过还是不能直接用管道调用 passwd 返回我想要的消息: <<<passwd : all authentication tokens updated successfully.>>> 标个记号,下次解决这个问题。
使用道具 report
creditRule reply jumpToLast
|wireless surveillance
GMT+8, 2024-12-22 16:21 , Processed in 0.072268 second(s), 19 queries .
Powered by Discuz! X3.2
© 2001-2013 Comsenz Inc.