Я пытаюсь реализовать команду cat, вызывая функцию exec() и сохраняя ее вывод в файле tmp. Моя проблема в том, что я знаю, что после вызова exec() что-нибудь потом будет игнорироваться, поэтому нет точки цикла для exec().Как выполнить exec() в цикле for? in C
Если у меня есть N аргументов для передачи в основную программу, как я могу выполнить цикл exec(), чтобы прочитать все аргументы?
Примечание: Использование системы() не является для меня выбором, вот как это задание.
Сейчас у меня есть следующий код в не очень изящным способом:
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <stdlib.h>
#include <time.h>
#include <errno.h>
#include <sys/stat.h>
#include <sys/times.h>
#include <sys/wait.h>
int main(int argc,char *argv[])
{
int fd;
char filename[] = "tmp.txt";
fd = open(filename, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
dup2(fd, 1); // make stdout go to file
dup2(fd, 2); // make stderr go to file
close(fd);
execl("/bin/cat", argv[0], argv[1], argv[2], argv[3], NULL);
return(0);
}
вы имеете в виду пройти, не разобрать, верно? –
И 'execv()' должен делать именно то, что вы хотите. https://linux.die.net/man/3/execv –
@MarkYisri, вы правы, мои орфографические ошибки. – krm