si dovrebbe sempre evitare di utilizzare system()
perché
- E 'risorsa pesante
- Sconfigge la sicurezza - non si sa che si tratta di un comando valido o fa la stessa cosa su ogni sistema, si potrebbe persino avviare programmi che non intendevi avviare. Il pericolo è che quando si esegue direttamente un programma, si ottengono gli stessi privilegi del programma: ciò significa che se, ad esempio, si esegue come amministratore di sistema, il programma dannoso eseguito inavvertitamente viene eseguito anche come amministratore di sistema . Se ciò non ti spaventa sciocco, controlla il tuo polso.
- I programmi anti virus lo odiano, il tuo programma potrebbe essere contrassegnato come un virus.
È necessario utilizzare CreateProcess().
È possibile utilizzare Createprocess() per avviare solo un file .exe e creare un nuovo processo per esso. L'applicazione verrà eseguita indipendentemente dall'applicazione chiamante.
Ecco un esempio che ho usato in uno dei miei progetti:
#include <windows.h>
VOID startup(LPCTSTR lpApplicationName)
{
// additional information
STARTUPINFO si;
PROCESS_INFORMATION pi;
// set the size of the structures
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
// start the program up
CreateProcess(lpApplicationName, // the path
argv[1], // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi // Pointer to PROCESS_INFORMATION structure (removed extra parentheses)
);
// Close process and thread handles.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
EDIT: L'errore che si sta ottenendo è perché è necessario specificare il percorso del file exe non solo il nome. Openfile.exe probabilmente non esiste.
Qual è l'errore? In ogni caso, su un sospetto, [man system] (http://linux.die.net/man/3/system) - prova '#include' –
RageD
Puoi provare 'fopen()'. Aprirà il tuo .exe. –
RageD, grazie per averlo compilato ma il programma non sta ancora aprendo openfile.exe –