[C] Variabele verwerken in system()

Pagina: 1
Acties:

  • snoopy
  • Registratie: December 2000
  • Laatst online: 25-08 12:42
Misschien een domme vraag maar ik ben met C een programma'tje aan het schrijven dat een commando moet uitvoeren op de console.

Ik weet dat je hiervoor de opdracht system(..) moet gebruiken.
Maar hij moet het volgende commando uitvoeren: 'net use lpt1: \\computernaam\printernaam'. Dat '\\computernaam\printernaam' moet door de gebruiker ingevuld worden en hierin gebruikt worden. Hoe kan ik die variabele er bij het commando in verwerken?

Verwijderd

Dat gaat in C niet makkelijker dan met sprintf() lijkt me

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

kijk eens naar execv()

dan doe je zoiets:
code:
1
2
3
4
5
6
char     *uitvoeren[ 4 ];   
uitvoeren[ 0 ]="net";
uitvoeren[ 1 ]="use";
uitvoeren[ 2 ]=invoer_string;
uitvoeren[ 3 ]=NULL;
execvp( uitvoeren [0], uitvoeren);

Doet iets met Cloud (MS/IBM)


Verwijderd

Op vrijdag 24 mei 2002 19:35 schreef D2k het volgende:
kijk eens naar execv()
execv() neemt de huidige applicatie context over. Daarna kom je dus nooit meer terug in deze applicatie. Lijkt me niet echt handig. ;).

Verwijderd

Probeer dit eens:
code:
1
2
3
4
5
    char command[100] = "net use LPT1: ";

    scanf ("%s",&command[strlen(command)]);
    
    system(command);

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Op vrijdag 24 mei 2002 22:00 schreef Digital_Cow het volgende:
Probeer dit eens:
code:
1
2
3
4
5
    char command[100] = "net use LPT1: ";

    scanf ("%s",&command[strlen(command)]);
    
    system(command);
uhh, doe dan:
code:
1
2
3
char Command[100];
sscanf( Command, "net use LPT1: %s", VariableHere);
system( Command);

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


Verwijderd

Op vrijdag 24 mei 2002 22:00 schreef Digital_Cow het volgende:
Probeer dit eens:
code:
1
2
3
4
5
    char command[100] = "net use LPT1: ";

    scanf ("%s",&command[strlen(command)]);
    
    system(command);
Waarom snap ik deze code niet? :?...

Verwijderd

Op vrijdag 24 mei 2002 22:12 schreef beelzebubu het volgende:

[..]

Waarom snap ik deze code niet? :?...
Het is "Advanced hersen-kronkel" C-code :P

Maar werkt wel :) (Mits de gebruiker de computernaam ook op de console moet intikken)

Anders die van _Mo_, maar daar wellicht sprintf() ipv sscanf() :?

  • Remenic
  • Registratie: Juni 2001
  • Laatst online: 09-08 20:06
Op vrijdag 24 mei 2002 22:12 schreef beelzebubu het volgende:

[..]

Waarom snap ik deze code niet? :?...
Wat hij doet is hij zoekt het geheugen adres van de laatste char in het array ( eentje verder dan ), en plakt daar de input achter.

Maar dit voorbeeld kan gevaarlijk zijn als een bepaalde grapjas meer dan 100-strlen(command) letters intypt...

Tenzij blijkt dat juist ik deze code dus niet snap ;)

Verwijderd

Op vrijdag 24 mei 2002 22:31 schreef Remenic het volgende:

[..]

Wat hij doet is hij zoekt het geheugen adres van de laatste char in het array ( eentje verder dan ), en plakt daar de input achter.

Maar dit voorbeeld kan gevaarlijk zijn als een bepaalde grapjas meer dan 100-strlen(command) letters intypt...

Tenzij blijkt dat juist ik deze code dus niet snap ;)
Correct :)

Inderdaad, 100% safe is anders, maar het gaat om het principe, toch :?
Fout afhandeling is een ander verhaal :+

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 06-09 22:39
code:
1
 char command[100] = "net use LPT1: ";
En dat compileert ook nog?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Op vrijdag 24 mei 2002 21:19 schreef beelzebubu het volgende:

[..]

execv() neemt de huidige applicatie context over. Daarna kom je dus nooit meer terug in deze applicatie. Lijkt me niet echt handig. ;).
Daar heeft ooit een of andere grapjas fork() voor bedacht :)

Verwijderd

Op zaterdag 25 mei 2002 15:54 schreef denheerscher het volgende:

[..]

Daar heeft ooit een of andere grapjas fork() voor bedacht :)
Weet ik. Alleen dat zei D2k er niet bij. (8>.

/me is al een paar jaar unix programmeur en kent de meeste commando's dus wel. :P.

  • snoopy
  • Registratie: December 2000
  • Laatst online: 25-08 12:42
Bedankt voor jullie reacties, ik denk dat ik er nu wel uitkom.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op zaterdag 25 mei 2002 19:01 schreef beelzebubu het volgende:

[..]

Weet ik. Alleen dat zei D2k er niet bij. (8>.

/me is al een paar jaar unix programmeur en kent de meeste commando's dus wel. :P.
hij zei ook niet dat het programma nog meer moest doen :P
vandaar dat ik zo'n klein stukkie code heb gegeven zonder fork()'s ed

Doet iets met Cloud (MS/IBM)

Pagina: 1