PDA

View Full Version : [C] Comandi C


VirtualFlyer
03-02-2010, 11:34
Avrei bisogno di sapere qual'è il comando che serve per aprire un altro exe.

fero86
03-02-2010, 12:01
Avrei bisogno di sapere qual'è il comando che serve per aprire un altro exe. il C non ne mette a disposizione, dipende dal sistema su cui programmi: su un sistema Unix-like (per es. Linux) devi usare l'accoppiata fork/exec, su Windows l'API CreateProcess.
altrimenti puoi usare la funzione system, ma ho il dubbio che essa resti in attesa finché l'altro programma non termina.

documentazioni varie:
fork: http://www.linuxmanpages.com/man2/fork.2.php
exec: http://www.linuxmanpages.com/man3/execl.3.php
CreateProcess: http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx
system: http://www.linuxmanpages.com/man3/system.3.php

DanieleC88
03-02-2010, 12:18
http://msdn.microsoft.com/en-us/library/ms682512(VS.85).aspx

O, se non hai bisogni particolari (oppure semplicemente ti impaurisce la CreateProcess):
http://linux.die.net/man/3/system

DanieleC88
03-02-2010, 12:21
il C non ne mette a disposizione, dipende dal sistema su cui programmi: su un sistema Unix-like (per es. Linux) devi usare l'accoppiata fork/exec
Ha bisogno di un .exe... sicuramente è Windows. :p
Poi puoi comunque sfruttare system() anche su Windows, è POSIX.

Per il tuo dubbio: “system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed.”. Sì, ti attacchi finché l'altro processo non finisce. :p

VirtualFlyer
03-02-2010, 12:37
Diciamo che non me ne intendo molto e quindi non ho capito ciò che mi avete detto!:D
Me lo potreste rispiegare?
Per caso mi sapete dire come si fa con Pascal?
Un'ultima cosa, come si fa a far aspettare al programma 2 secondi o 2 minuti prima di stampare qualcosa sullo schermo?

DanieleC88
03-02-2010, 13:47
In breve: in C non c'è un vero e proprio metodo "standard" per avviare altri processi, dal momento che questo è compito specifico del sistema operativo, e devi quindi usare gli strumenti che il sistema operativo ti mette a disposizione. Su Windows hai il metodo CreateProcess() che si occupa di questo, su sistemi Unix devi usare fork() + exec(), che ha sostanzialmente lo stesso effetto.

In Pascal non ricordo, ma suppongo che sia la stessa cosa. Per fermare il tuo processo per n secondi usa sleep(n).

fero86
04-02-2010, 15:57
Diciamo che non me ne intendo molto e quindi non ho capito ciò che mi avete detto!:D
Me lo potreste rispiegare?
Per caso mi sapete dire come si fa con Pascal? guarda il primo link del post #3, c'é l'esempio in C. in Pascal é la stessa cosa, cambia solo la sintassi del linguaggio.