В настоящее время я работаю над проектом, который требует от меня вызова команды Linux во время кода C. Я нашел в других источниках, что могу сделать это с помощью команды system(), а затем сохранить значение для оболочки Linux в моей программе на C.Linux & C: System() Команда
Например, мне нужно будет изменить каталог для
root:/sys/bus/iio/devices/iio:device1>
, а затем входной
cat in_voltage0_hardwaregain
как команда. Это должен выводить дважды в C.
Так что мой пример кода будет:
#include <stdio.h>
#include <stdlib.h>
double main() {
char directory[] = "cd /sys/bus/iio/devices/iio:device1>";
char command[] = "cat in_voltage0_hardwaregain";
double output;
system(directory);
output = system(command);
return (0);
}
Я знаю, что это, вероятно, не самый лучший способ сделать это, так что любая информация очень ценится.
Что ваш вопрос? –
Вы не можете использовать дочерний процесс для изменения рабочего каталога, поэтому 'cd' - это не программа, а встроенная оболочка. Вам нужно вызвать 'chdir()' в вашем собственном процессе или использовать разумную вещь и использовать новые '* at()' версии файловых функций (например, 'openat()'). – EOF
Это не работает. Почему бы не использовать функцию для чтения файла? Использование 'cat' кажется, будто вы стреляете головой через колено (возможно, вы обнаруживаете магическую пулю). – Olaf