社区
界面
帖子详情
关于子进程和父进程的问题
古月无华
2008-11-30 04:27:17
您好,不耽误您的时间,直接描述问题:
两个独立的程序A,B,A是主程序,B是升级程序
当我点击主程序A时,这时提示升级窗口,然后启动子进程B进行升级,子进程B启动后,把父进程A(主窗口)关闭,子进程B更新完后,要重新启动更新的父进程A,这时问题出现了,每次启动时都不正常,相应的Socket不能正常接发消息,还有一个问题就是,当我B启动后,正在进行更新时,A已经不存在了,这时双击桌面A时,启动也不正常.多谢指教!!!
...全文
211
7
打赏
收藏
关于子进程和父进程的问题
您好,不耽误您的时间,直接描述问题: 两个独立的程序A,B,A是主程序,B是升级程序 当我点击主程序A时,这时提示升级窗口,然后启动子进程B进行升级,子进程B启动后,把父进程A(主窗口)关闭,子进程B更新完后,要重新启动更新的父进程A,这时问题出现了,每次启动时都不正常,相应的Socket不能正常接发消息,还有一个问题就是,当我B启动后,正在进行更新时,A已经不存在了,这时双击桌面A时,启动也不正常.多谢指教!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
古月无华
2008-12-01
打赏
举报
回复
呵呵,问题解决了,多谢楼上的几位,当主程序更新完后,我没有CreateProcess,而是用WinExec,可以实现自启动了.
yc_8301
2008-12-01
打赏
举报
回复
问题:
1.每次启动时都不正常,相应的Socket不能正常接发消息,
2.当我B启动后,正在进行更新时,A已经不存在了,这时双击桌面A时,启动也不正常
回答:
1.检查A关闭时,是否真的断开连接,释放资源等。
2.我的方案如下:
A 启动 B, B弹出对话框,让用户关闭A后进行更新。更新时,另外存放新程序。
B 更新Ok后,用新程序A 覆盖 A。
另外,可以在A程序中添加检查代码,检查 B是否启动,如果更新程序B已经启动,则提示用户,A不能启动,更新后再启动。
以上,由于没有经过实践,只是初步的想法,所以 是否可行,还有待高手指正。。。
csgdseed
2008-12-01
打赏
举报
回复
帮顶
古月无华
2008-12-01
打赏
举报
回复
to 3楼
其实主程序退出,是子进程给主进程发完信息后,主进程才退出的,这个不是强制退出,退出时关闭连接、释放资源.
cnzdgs
2008-11-30
打赏
举报
回复
“您好,不耽误您的时间,直接描述问题”——这句就是在浪费大家的时间。
不耽误您的时间,直接回答问题:主程序自己推出,不要让其它程序来强行结束,退出前主动关闭连接、释放资源。
古月无华
2008-11-30
打赏
举报
回复
回复1楼
1 问题是,更新完后,重新启动时,服务器会给主程序发消息,发几次,主程序都没有回复,日志里也没有记录
2 我说这个问题,我觉得对解决问题有帮助,您的方法也可行,担是还是要自启动的
我觉得是父进程和子进程之间的问题,父进程启动子进程,关闭父进程后,子进程中保存有父进程的相关信息,多谢大家
一条晚起的虫
2008-11-30
打赏
举报
回复
相应的Socket不能正常接发消息
//确认Socket是否正常。
//正在进行更新时,A已经不存在了,这时双击桌面A时,启动也不正常.多谢指教!!!
//更新时不用删除A,等更新完成后,再检查是否需要删除。更新的文件可以先保存为其他名称
4.
父
进程
和
子
进程
父
进程
和
子
进程
子
进程
是
父
进程
的复制品Unix/linux系统中的
进程
创建是这样的,理解起来有点绕。
父
进程
先执行fork()系统调用,这个调用的结果是系统中多出了一个跟
父
进程
内容完全一样的
进程
,这个新
进程
被称为
子
进程
...
进程
(
父
进程
、
子
进程
、init
进程
)
父
进程
和
子
进程
、init
进程
之间的关系 通过上节我们知道,
子
进程
是通过fork()函数创建的,相当于
父
进程
的一个复制品,
子
进程
和
父
进程
除了
子
进程
复制了
父
进程
还有什么关系呢? 1.
子
进程
和
父
进程
属于同一
进程
组,
父
进程
...
关于
父
进程
和
子
进程
的关系
如果是a
进程
创建了b
进程
,那么a
进程
就是b
进程
的
父
进程
,反之,如果是b创建了a,那么b
进程
就是a的
父
进程
,这是在windows出现以来一直是程序猿们都证实的,但是在在win Vista后面有了一个新安全消息机制,UAC(user ...
如何判断
子
进程
和
父
进程
区分
父
进程
和
子
进程
判断
子
进程
和
父
进程
可以使用**fork()**函数: 所需头文件: #include<sys/types.h> #include<unistd.h> 返回值: 0:
子
进程
>0:
父
进程
,返回值为创造出的
子
进程
的PID -1:出错 ...
fork出的
子
进程
和
父
进程
一、fork后的
父
子
进程
...将
子
进程
id返回给
父
进程
的理由是:因为一个
进程
的
子
进程
可以多于一个,没有一个函数使一个
进程
可以获得其所有
子
进程
的
进程
id。对
子
进程
来说,之所以fork返回0给它,是因为它随时可以调用
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章