2015-10-17 54 views
0

我有一個用C語言編寫的程序(admin-secret),它有一個名爲authenticate的函數。在這個函數裏面有一個叫做「result」的變量。我如何使用另一個c程序回顯這個變量?
這樣做的目的是使用strncmp返回值來猜測密碼。c程序中的echo變量

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

int main(int argc, char *argv[]) 
{  
    char command[1000] = {0}; 
    int result; 
    sprintf(command, "/home/alice/Public/admin-secret %s; echo %d", argv[1], result); 
    system(command); 
    printf("Result: %s\n" , result); 
    return 0; 
} 

回答

1

您需要創建一個管道,一個簡單的方法來做到這一點是通過使用POSIX功能popen()

#include <stdio.h> 

int main(int argc, char* argv[]) 
{ 
    FILE *pipe; 
    char line[256]; 
    pipe = popen("ls", "r"); 
    if (pipe != NULL) 
    { 
     while (fgets(line, sizeof(line), pipe) != NULL) 
      fprintf(stdout, "%s", line); 
     pclose(pipe); 
    } 
    return 0; 
} 

就可以構建sprintf() 過的命令,並把它作爲第一個參數popen(),這只是向你展示瞭如何獲取另一個程序的輸出。


你真的應該使用snprintf()防止溢出目的地陣列

+0

這是假設'管理,secret'打印任何東西到stdout有用。 – melpomene