Non c'è un modo standard. Dipende dal sistema operativo, dalle tipologie di applicazioni installate, dalla configurazione del sistema.
L'approccio migliore, che funziona sempre, è quello di non tentare di avviare l'editor di testo esterno ma implementare l'editor dentro l'applicazione stessa.
Se non è possibile, devi prima identificare il sistema operativo:
- Se Linux: leggi il valore della variabile di ambiente EDITOR (getenv()
) e quindi chiami una primitiva per eseguire processi (execl, execlp, execle, execv, execve, etc...
) passando come nome del processo il valore della variabile EDITOR e come parametro il percorso al file da aprire. Se la variabile EDITOR non è settata, puoi tentare in ordine di cercare editor di testo comuni in ambiente Linux nel file system (vim, nano, ed, gedit, kate, ...
.
- Se Windows: la presenza del notepad in C:\Windows\system32\notepad.exe
dovrebbe essere quasi garantita. Puoi quindi chiamare CreateProcess
passandogli il percorso al notepad come programma da eseguire e il nome del file da aprire come parametro. Sarebbe comunque meglio avere una opzione di configurazione da quale parte nel programma che permetta all'utente di scegliere un altro editor di testo.
- Se MacOS: altro...
- Se BSD: altro...
- e così via...
Per identificare il sistema operativo, do solito si controlla la presenza di macro definite dal compilatore (linux, _WIN32, ecc...
) tramite direttive del preprocessore.