2013-08-27 61 views
0

我有下面這個小代碼,其中文件名是從命令行傳遞的。這個程序從execlp()從不同的程序中調用。我希望system()這個命令的o/p在這裏成爲argv[2]的文件名。沒有得到一個線索如何做到這一點。system()調用o/p到命令行傳遞的文件名

#include <stdio.h> 

int main(int argc,char *argv[]) 
{ 
    char c; 

    printf("Received : %s filename: %s\n",argv[1],argv[2]); 
     FILE *fp=fopen(argv[2],"w"); 

    system("./linked_list"); 

    printf("Here...\n"); 
    sleep(5); 
    //sleep(3*atoi(argv[2])); 
    return 0; 
} 

./linked_list的O/P是一個簡單的列表得到印刷如下:

****printing list**** 
info :0 address:0x884e068 next:0x884e0c8 
info :1 address:0x884e0c8 next:0x884e058 
info :2 address:0x884e058 next:0x884e0b8 
info :3 address:0x884e0b8 next:0x884e048 
info :4 address:0x884e048 next:0x884e0a8 
info :5 address:0x884e0a8 next:0x884e038 
info :6 address:0x884e038 next:0x884e098 
info :7 address:0x884e098 next:0x884e028 
info :8 address:0x884e028 next:0x884e088 
info :9 address:0x884e088 next:0x884e018 
info :10 address:0x884e018 next:0x884e078 
info :11 address:0x884e078 next:0x884e008 
Last element... info:12 address:0x884e008 next:(nil) 

Child terminating... 
+0

使用重定向 - './linked_list>文件'。 – ugoren

回答

3

記住system函數調用外殼,這樣你就可以正常使用shell重定向:

char command[64]; 
snprintf(command, sizeof(command), "./linked_list > %s", argv[2]); 
system(command);