Как я могу вызвать два приложения C из другого приложения C?
например. :
pg1.c can be run as ./a.out pg1_args
pg2.c can be run as ./a.out pg2_args
Я хотел бы написать программу, которая может быть запущена как:
./a.out pg1_args pg2_args
С результатом, эквивалентным:
./a.out pg1_args
./a.out pg2_args
./a.out pg1_args
./a.out pg2_args
pg1 здесь svm_scale, а pg2 здесь svm_predict, оба взяты из libsvm:
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
[редактировать]
@ Джонатан,
Я написал эти программы для опробования этой концепции ..
pg1.c
#include <stdio.h>
#include <string.h>
int main(int argc,char **argv)
{
FILE *fin;
fin=fopen("pg1file.txt","a");
fprintf(fin,"%s",argv[1]);
fflush(fin);
fclose(fin);
}
pg2.c
#include <stdio.h>
#include <string.h>
int main(int argc,char **argv)
{
FILE *fin;
fin=fopen("pg2file.txt","a");
fprintf(fin,"%s",argv[1]);
fflush(fin);
fclose(fin);
}
pg3.c:
#include<stdio.h>
#include<string.h>
int main(int argc,char **argv)
{
int i;
const char *cmd1 = strcat("./pg1 ",argv[1]);
const char *cmd2 = strcat("./pg2 ",argv[2]);
for(i=0;i<4;i++)
{
if (system(cmd1) != 0)
printf("\n error executing pg 1");
if (system(cmd2) != 0)
printf("\n error executing pg 2");
}
}
[root@localhost trinity]# ./a.out first second
Segmentation fault (core dumped)
[root@localhost trinity]#
Может кто-нибудь объяснить, что я сделал не так?