execl() problem



  • hallo,

    ich baue gerade eine eigene distri mit installationsroutine, nun bin ich auf ein kleines problem gestossen:

    switch(fork())
    
         {
          case 0:
            status = execl("/bin/sh", "/bin/sh", "-c", "/bin/mount", "-t", hdd_info.root, "/mnt/edu", "&>>install.log", NULL);
    
            exit(0); break;
          case -1:strerror(errno);
            fprintf(stderr, "Fork failed in mount!\n");
            exit(0); break;
          default: wait(&status); break;
         }
    

    ich bin am verzweifeln, ich weis nicht wieso das nicht ausgefuehrt wird.
    ich hab noch einen aehnlichen aufruf nur mit mount versucht, der wurde zwar ausgefuehrt, aber die parameter wurden falsch angenommen, denn mount hat gemeckert. in der struct hdd_info ist auch alles 100% sicher und richtig belegt. bin fuer jeden rat dankbar

    blubb



  • versuch doch mal /bin/sh -c mount bla blub

    Das muss so aussehen:

    /bin/sh -c "mount bla blub"



  • warum rufst du mount über Umwege via sh auf? Mach das doch entweder direkt oder nimmt man: system(3)



  • hallo,

    ja system ist nett, aber das soll variabel sein, und system ist nur ein fork mit ner exec anweisung... ich brauch die sh leider fuer &>>, weil das bestandteil der sh ist, und nicht von exec, was lediglich ein system_call ist...

    blubb


Anmelden zum Antworten