У меня есть оболочка, в которой есть функция, которая в конечном итоге вызывает execvp (...), которая дает выводНапример, «echo hello» выдает «hello».Все работает, не волнуйся.Я очень много тестировал, я просто не поместил полный код здесь, потому что это 1000 строк кода.
Как я могу взять этот вывод из execvp, дублировать его и поместить в строку?
Я знаю, что я использую dup2, но я не знаю, как.
У меня есть это в моем коде:
char* globalString; //a global string I want to put the output into
char* myString = "one two three ";
char* append = "echo four";
int myPipe[2]; //my pipe
pipe(myPipe);
, затем я вызываю свою функцию и хочучтобы передать конец записи в канал.
myfunction( ... , [pointer to write end of pipe]); //i don't know how
//ignoring previous code
cpid = fork();
if(cpid < 0){
//Fork wasn't successful
perror("fork");
return -1;
}
//in the child
if(cpid == 0){
execvp(...); // in this example, this prints "four" to stdout
//execvp returned, wasn't successful
perror("exec");
fclose(stdin);
exit(127);
}
//then more code happens
}
в конце я хочу, чтобы вывод из exec был помещен в globalString.Затем я помещаю globalString в myString, чтобы myString было «один два три четыре»
спасибо.