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

nilboy 2003-10-20 12:44:52
似乎没有可用的函数,我对这方面非常模糊,希望最好给出的示例,非常感谢!!
...全文
107 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);




Re: 《Linux 进程管理命令》   ---------------------------------------内容提要: 01/15)命令 ps         :查看进程(快照)02/15)命令 pstree   :显示进程状态树03/15)命令 pgrep   :查找匹配条件的进程04/15)命令 kill        :终止进程号(1277)05/15)命令 killall    :通过进程名(nginx)终止进程(父/子进程)06/15)命令 pkill      :通过进程名终止进程(通杀)/终止客户端(pst/tty)07/15)命令 top       :实时显示系统各个进程的资源占用状况(录像)08/15)命令 nice      :调整程序运行时的优先级09/15)命令 renice   :调整运行进程的优先级10/15)命令 nohup  :用户退出系统,进程继续工作11/15)命令 strace   :跟踪进程的系统调用12/15)命令 ltrace    :跟踪进程调用库函数13/15)命令 runlevel:输出当前运行级别14/15)命令 init        :初始化 Linux 进程15/15)命令 service  :管理系统服务  本人在教学和实战过程发现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的Linux架构,但是在来来回回的具体操作,还是体现出CLI(命令界面)功底不够扎实,甚至操作的非常‘拙’、处处露‘怯’。 对一个士兵来说,枪就是他的武器,对于一个程序员来说,各种library(工具库)就是他的武器;而对于Linux运维人员来说,无疑命令行工具CLI(命令界面)就是他们的武器;高手和小白之间的差距往往就体现在对于这些“武器”的掌握和熟练程度上。有时候一个参数就能够解决的事情,小白们可能要写一个复杂的Shell脚本才能搞定,这就是对CLI(命令界面)没有理解参悟透彻导致。 研磨每一个命令就是擦拭手的作战武器,平时不保养不理解,等到作战的时候,一定不能够将手的武器发挥到最好,所以我们要平心、静气和专注,甘坐冷板凳一段时间,才能练就一身非凡的内功! 本教程从实战出发,结合当下流行或最新的Linux(v6/7/8 版本)同时演示,将命令行结合到解决企业实战问题来,体现出教学注重实战的务实精神,希望从事或未来从事运维的同学,能够认真仔细的学完Linux核心命令的整套课程。 本课程系列将逐步推出,看看我教学的进度和您学习的步伐,孰占鳌头! 注:关于教学环境搭建,可以参考本人其它课程系列,本教学就不再赘述! 《参透 VMware 桌面级虚拟化》 《在虚拟机安装模版机(包括应用软件等)》 《SecureCRT 连接 GNS3/Linux 的安全精密工具》

69,368

社区成员

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

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