使用System从c代码执行程序

时间:2017-05-20 16:33:46

标签: c exec execution

我正在写c程序,它获取输入执行fileName和txt fileName。 我的程序应该使用下一格式的txt文件中的字符串运行exe文件: ./exame ./fileName .. 我用fgets()函数从文本文件中读取每一行。 我使用system()函数从我的代码运行exe。 这是我的代码

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

#define READSIZE 100


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

    FILE * src;
    //char path[] ="home/omriz/playGround/Cyber/ex4/1/prog1strings.txt";    
    char buffer[READSIZE];
    int i;
    int status;
    char *result = malloc(strlen(argv[2]) + strlen(buffer)+2);//+1 for the zero-terminator


    if(argc < 3){
        printf("prototype error <exe file to run><strings txt file txt>\n");
        return -1;
    }
    printf ("exe file path is : %s \n",argv[1]);
    printf ("src file path is : %s \n",argv[2]);

    src = fopen(argv[2],"r");

    while(!(feof(src))){
        fgets(buffer,READSIZE,src);
        printf("string read from txt file is: %s\n",buffer);
        *result = malloc(strlen(argv[2])+strlen(buffer)+2);
        strcpy(result,argv[1]);
        strcat(result," ");
        strcat(result, buffer);
        printf("result is %s\n",result);
        printf("before sys command\n");
        status = system(result);
        printf("status value is %d\n",status);
    }
    printf("we reached the end of the string.txt file\n");
    free(result);
    fclose(src);
}

问题是程序在读取文本文件中的所有行之前退出,我不知道原因。

我从我的代码运行的exe文件应该返回字符串值 &#34;真&#34;或&#34;错误&#34; 考虑使用system()函数,我怎样才能捕获这个值?

感谢。

1 个答案:

答案 0 :(得分:1)

*result = malloc(strlen(argv[2])+strlen(buffer)+2);

结果是一个char *,所以这是一个错误(只需删除*)

编辑:一点解释

malloc返回一个void *,所以在这里你将结果指向的1byte设置为malloc返回的指针