用c如何打开一个终端?当然不是execl("gnome-terminal")

iamwjp 2008-11-26 09:20:24
用c如何打开一个终端?当然不是execl("gnome-terminal")

我的守护进程希望在后台运行,被守护进程希望在终端运行,可以printf,puts,当在fork()==0后调用execl("gnome-termianl", "-x", "myapp", NULL)后守护进程wait返回,所以希望可以用一个不用gnome-terminal的方式打开一个可供输出终端。

多谢指教。
...全文
386 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2008-12-05
  • 打赏
  • 举报
回复
标准解决方法是手工重定向,而不是让程序自己弹出一个 gnome-terminal 来。不是所有环境都有 X 和 Gnome 的。
快乐田伯光 2008-12-04
  • 打赏
  • 举报
回复
直接open终端文件就可得到文件句柄啊,再用dup就可以重定向标准输入输出了, 但这样做有意义吗?
xiaoshao_0_0 2008-11-30
  • 打赏
  • 举报
回复
那就用重定向的方法,把程序的输出都接受过来,显示到什么东西上面就好了阿。
redtin 2008-11-30
  • 打赏
  • 举报
回复
LZ是想在图形界面弹出个窗口显示输出而已。
帮顶了
iamwjp 2008-11-29
  • 打赏
  • 举报
回复
不是要隐藏进程,我是要一个独立的terminal
iamwjp 2008-11-28
  • 打赏
  • 举报
回复

说的这么明白还不清楚,看来得提高我的表达能力了,代码只是写个大概的意思

我的app想新开一个终端,在里面printf,而不是在启动终端里面一直挂着

要是还不明白,就没辙了
mifeixq 2008-11-28
  • 打赏
  • 举报
回复
对deamon没有研究过,不过看apue说,一个deamon进程需要很多步骤
父进程退出
设置会话ID
设置umask(0)
转/目录
等等,记不太清楚了

LZ说的意思我不是很明白 不过看你写的,你是在子进程里打开一个终端,我不清楚你想要什么,不过
execl()需要指定path的
execl("/usr/bin/xterm", "xterm", (char *)0);
iamwjp 2008-11-28
  • 打赏
  • 举报
回复
int main()
{
pid_t pid;
pid = fork();
if(pid>0)
{
wait(NULL);//当子进程是以gonme-terminal启动的应用时,会立即返回,直接启动其他应用则会等待
}
else if(pid==0)
{
execl("gnome-terminal", "-x", "myapp", NULL);
}

return 0;
}
就呆在云上 2008-11-28
  • 打赏
  • 举报
回复
那就写入文件,你再看看撒
或者重定向
xhs_lh04 2008-11-28
  • 打赏
  • 举报
回复
主要是不明白你的意图,不好说什么.UP吧
yingge 2008-11-28
  • 打赏
  • 举报
回复
随便回回,没太看懂你的意思

是在一个进程中fork然后执行你的"被守护进程??"吗?

那这个"被守护进程??"不是本来就在终端中吗,继承下来的啊...
z_ming2005 2008-11-28
  • 打赏
  • 举报
回复
linux C 隐藏进程
Longinc 2008-11-26
  • 打赏
  • 举报
回复
帮顶
spofmy 2008-11-26
  • 打赏
  • 举报
回复
没搞过,帮顶
WingForce 2008-11-26
  • 打赏
  • 举报
回复
http://wangcong.org/blog/?p=423
虽然偶不是很懂linux,但是Google。。。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧