Как я могу запускать системные команды в C / C ++, используя `execl ()`, передавая аргументы функции только как командную строку, а не как исполняемый файл? - PullRequest
1 голос
/ 10 октября 2019

Я хотел бы выполнить эту команду в программе на C / C ++: stat -c "%F %A %n" *filename goes here* Имя файла хранится в argv[1] функции main.

Я пробовал как execl("/bin/stat", "stat", "-c", "\"%F %A %n\"", "file", NULL);

Как должна выглядеть команда execl() для достижения результата?

Ответы [ 2 ]

2 голосов
/ 10 октября 2019

Ваша команда должна выглядеть следующим образом:

int res = execl("/bin/stat", "stat", "-c", "\"%F %A %n\"", argv[1], NULL);
if (res == -1) {
   perror("/bin/stat");
   exit(1);
}

Тогда perror покажет вам:

/bin/stat: No such file or directory

, и вы поймете, что stat находится в / usr / bin или что используетexeclp была бы хорошей идеей.

1 голос
/ 10 октября 2019

Я нашел свою проблему. Команда stat находится в /usr/bin вместо /bin.

...