Вам нужно запустить gnome-open, kde-open или exo-open, в зависимости от того, какой рабочий стол вы используете.
Я полагаю, что есть проект под названием xdg-utils , который пытается предоставить единый интерфейс для локального рабочего стола.
Итак, что-то вроде:
snprintf(s, sizeof s, "%s %s", "xdg-open", the_file);
system(s);
Остерегайтесь внедрения кода.Безопаснее обходить слои сценариев с помощью пользовательского ввода, поэтому рассмотрим что-то вроде:
pid = fork();
if (pid == 0) {
execl("/usr/bin/xdg-open", "xdg-open", the_file, (char *)0);
exit(1);
}
// parent will usually wait for child here