当前位置: 技术问答>linux和unix
为什么程序一定要在终端中运行?关闭终端程序也关闭了.
来源: 互联网 发布时间:2016-06-17
本文导语: 用GTK写的程序有界面也只能在终端里运行,不能双击或用启动器启动,为何像linux qq,msn,emacs都可以不依赖终端运行,双击它的可执行文件就可以运行,即便是用终端把打这些程序,关闭终端后这些程序还是不受影响仍然运行...
用GTK写的程序有界面也只能在终端里运行,不能双击或用启动器启动,为何像linux qq,msn,emacs都可以不依赖终端运行,双击它的可执行文件就可以运行,即便是用终端把打这些程序,关闭终端后这些程序还是不受影响仍然运行,这叫什么?我应该怎样做?
|
终端可以看做是那些程序的父进程,
父进程关闭了,子进程也就运行不了了。
可以考虑不用终端开启你的程序,
在运行程序菜单中输入程序名就可以了。
这样就不需要终端了。
Ubuntu系统打开运行程序窗口的系统快捷键为Alt+F2
父进程关闭了,子进程也就运行不了了。
可以考虑不用终端开启你的程序,
在运行程序菜单中输入程序名就可以了。
这样就不需要终端了。
Ubuntu系统打开运行程序窗口的系统快捷键为Alt+F2
|
nohup 命令
用途:不挂断地运行命令。
语法:nohup Command [ Arg … ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
用途:不挂断地运行命令。
语法:nohup Command [ Arg … ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
|
我试过,从终端运行的程序,会随着终端关闭,你说的EMACS也不例外,其余软件我没用过。为什么非要从终端运行呢?建议你按照二楼的办法。
|
redhat里按Alt+F1
|
另外一个办法,把你的程序做成守护进程就可以脱离终端了。调用下面的函数就能让你的程序运行成守护进程:
void init_daemon()
{
pid_t pid;
int i = 0;
if ((pid = fork()) > 0)
exit(0); //是父进程,结束父进程
else if( pid 0)
exit(0); //是第一子进程,结束第一子进程
else if(pid
void init_daemon()
{
pid_t pid;
int i = 0;
if ((pid = fork()) > 0)
exit(0); //是父进程,结束父进程
else if( pid 0)
exit(0); //是第一子进程,结束第一子进程
else if(pid