я пытаюсь заставить мою программу войти в среду chroot и выполнить несколько команд, а затем выйти.
Например
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define ChRoot "sudo chroot \"/\" /usr/bin/env -i HOME=/root TERM=\"$TERM\" PATH=/bin:/usr/bin:/sbin:/usr/sbin:/bin /bin/bash --login +h"
void func1(){
//enter the chroot environment
char line[130]; FILE *fp;
fp = popen(ChRoot, "r");
while(fgets( line, sizeof line, fp)){
printf ("%s\n",line);
}
pclose(fp);
}
void func2(){
//run a command in the chroot environment
char line[130]; FILE *fp;
fp = popen("ls", "r");
while(fgets( line, sizeof line, fp)){
printf ("%s\n",line);
}
pclose(fp);
}
int main() {
func1();
func2();
return 0;
}
проблема с этим кодом в том, что он попадет в среду chroot, но не будет запускать func2, пока я не выйду из среды chroot. Что мне нужно, это заставить мой код выполнять func1, а затем func2 в среде chroot и затем завершать работу. Я знаю, что я делаю в своем коде, это ужасно неправильно, однако, я надеюсь, что смогу получить некоторые указания.
Любая помощь будет высоко ценится.