Команда system
создает процесс оболочки new и выдает команду этой оболочке, поэтому при вводе exit
она закроет только новую оболочку.
Способ сделать то, что вы просите, это:
#include <unistd.h>
#include <signal.h>
int main(int argc, char *argv[])
{
kill(getppid(), SIGKILL);
return 0;
}
Однако это ПЛОХАЯ ИДЕЯ (по многим причинам: вы слепо убиваете какой-то процесс, который породил ваш, не имея ни малейшего представления о том, что это на самом деле ... это может быть оболочка входа пользователя или это может быть init
). Вы, вероятно, просто хотите закрыть окно терминала, верно? Затем запустите вашу программу так:
xterm -e my_program
Это запустит вашу программу в собственном окне, которое закрывается, когда программа завершает работу. Нет хитрости, и она работает с любой программой.