what I'm trying to do is get my program to enter the chroot environment and execute some commands and then exit.
Example
#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; }
The problem with this code is that it will be me in the chroot environment, but it will not run func2 until I exit the chroot environment. I need my code to execute func1 and then func2 in a chroot environment and then exit. I know what I am doing in my code, this is terribly wrong, however I hope I can get some guidance.
Any help would be greatly appreciated.
source share