在C中如何创建一个进程,请各位高手指点一下

nilboy 2003-10-20 12:44:52
似乎没有可用的函数,我对这方面非常模糊,希望最好给出的示例,非常感谢!!
...全文
105 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoohoo 2003-10-20
  • 打赏
  • 举报
回复
创建一个进程是跟操作系统用关的,和语言本身没有关系。象unix创建进程的唯一方式就是fork(),对windows,可以使用CreateProcess函数。
jakeye 2003-10-20
  • 打赏
  • 举报
回复
学习ING

不明白,为什么在创建进程?创建进程有什么用?
nilboy 2003-10-20
  • 打赏
  • 举报
回复
我想知道如何自己编写windows下创建进程的方法,即不直接利用现成的createprocess函数,涉及如申请内存空间及其分配之类的,望各位在指点一下,马上结帖给分,谢谢谢....
Hot_Forever 2003-10-20
  • 打赏
  • 举报
回复
在unix和linux下fork()会产生一个与父程序相同的子程序,唯一不同之处在于其process id(pid).
函数声明
pid_t fork(void);
返回值 -1 失败
0 子程序进程
>0 将子程序的pid传回给父进程

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

void main(void)
{
pid_t pid;

printf("hello\n");
pid = fork();

switch (pid) {
case -1: printf("failure!\n"); break;
case 0: printf("I am child!\n"); break;
default: printf("my child is %d\n",pid); break;
}
for (;;) { /* do something here */ }
}

程序结果:
hello
my child is 8650
I am child!

可见,使用fork()函数,已经使程序一分为二了

在windows下,可以有3个API函数使用:WinExec, shellexecute,createprocess
WinExec最简单,两个参数,前一个指定路径,后一个指定显示方式
ShellExecute较 WinExex灵活一点,可以指定工作目录
CreateProcess最复杂,一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等.如下

STARTUPINFO stinfo; //启动窗口的信息
PROCESSINFO procinfo; //进程的信息
CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE, NORMAL_PRIORITY_ CLASS,NULL,NULL, &stinfo,&procinfo);




69,336

社区成员

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

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