Linux创建进程的问题,请高手帮忙解答一下?

guoxuqu 2010-09-13 08:27:02
我们知道,linux中创建进程的方法有fork和exec;
其中fork时,通过复制调用进程来创建新的进程;
exec则是用一个新的程序覆盖原进程的内存空间,来实现进程的转变。
那能不能覆盖原进程,创建一个跟原进程不一样的进程,类似Windows的CreateProcess?
...全文
95 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoxuqu 2010-09-13
  • 打赏
  • 举报
回复
system我知道,但他要调用Shell,我觉得效率不好。问题我搞懂了,谢谢各位帮忙。
wwwunix 2010-09-13
  • 打赏
  • 举报
回复
我看了一下Windows下对CreateProcess的解释。其实就是fork+exec,功能是一样的。
如果你一定要求用一条语句实现的话,可以试试system()函数。
yuehong3 2010-09-13
  • 打赏
  • 举报
回复
fork fork!
guoxuqu 2010-09-13
  • 打赏
  • 举报
回复
那就是没有办法直接创建一个跟原进程不一样的进程喽。
wwwunix 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 guoxuqu 的回复:]

不好意思,我发错了,我是说不要覆盖原进程,创建一个跟原进程不一样的进程
[/Quote]
那么这个新进程中运行什么?
如果运行的是可执行程序,那么用fork+exec可以实现。
如果运行的是函数(源代码),可以用pthread_create(线程)实现。
mymtom 2010-09-13
  • 打赏
  • 举报
回复
linux中创建进程的唯一方法是fork
exec不会创建新进程。
[Quote=引用楼主 guoxuqu 的回复:]
我们知道,linux中创建进程的方法有fork和exec;
其中fork时,通过复制调用进程来创建新的进程;
exec则是用一个新的程序覆盖原进程的内存空间,来实现进程的转变。
那能不能覆盖原进程,创建一个跟原进程不一样的进程,类似Windows的CreateProcess?
[/Quote]
guoxuqu 2010-09-13
  • 打赏
  • 举报
回复
不好意思,我发错了,我是说不要覆盖原进程,创建一个跟原进程不一样的进程
wwwunix 2010-09-13
  • 打赏
  • 举报
回复
fork+exec
不就是:“覆盖原进程,创建一个跟原进程不一样的进程”了吗?
不解楼主的意图是什么?
guoxuqu 2010-09-13
  • 打赏
  • 举报
回复
创建进程要一个可执行文件。 fork创建的进程跟父进程用的是同一个可执行文件。我想问的是能不能创建一个进程,运行的可执行文件跟父进程不同。
谭海燕 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guoxuqu 的回复:]

楼上的各位看来看清楚我的意思。
[/Quote]

你创建一模一样的进程没多大意义.
guoxuqu 2010-09-13
  • 打赏
  • 举报
回复
楼上的各位看来看清楚我的意思。
Wind_Runner 2010-09-13
  • 打赏
  • 举报
回复
可以fork之后把父进程kill掉,不过没多大意义
谭海燕 2010-09-13
  • 打赏
  • 举报
回复
参考

http://blog.csdn.net/feiyinzilgd/archive/2010/07/20/5750853.aspx


进程fork()之后遵循(COW)写时复制原则.
justkk 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 guoxuqu 的回复:]
那能不能覆盖原进程,创建一个跟原进程不一样的进程,类似Windows的CreateProcess?
[/Quote]
你是说进程名字吗?
louyong0571 2010-09-13
  • 打赏
  • 举报
回复
帮顶,关注

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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