C语言创建进程

刚来美国读研,操作系统课上有一道作业要求:写一个C语言程序创建5个进程,进程j(从1到5)输出j的值和它的pid,父进程等待所有子进程结束后结束。本科光信息专业编程接触的... 刚来美国读研,操作系统课上有一道作业要求:写一个C语言程序创建5个进程,进程j(从1到5)输出j的值和它的pid,父进程等待所有子进程结束后结束。本科光信息专业编程接触的很少,现在无从下手,也在网上查了很多但还是不知道怎样和自己的问题结合起来。目前只知道用fork()函数创建进程,然后显示pid。其他的就不知道具体怎么操作了。老师上课用了下面这样一段程序,可我在自己电脑windows下编译总是提示sys/signal.h:no such file or directory.这两天感觉好无助,希望能得到一些指导和建议,万分感谢!
#include <sys/signal.h>
#include <stdio.h>
int fork(void);
int getpid(void), getppid(void);

int main()
{

int pid;

printf("INITIAL: pid of old process is %d\n",getpid());

if ((pid=fork())==0) {
/* child code */
printf("CH: my pid = %d\n",getpid());
printf("CH: pid in child (should be zero) %d\n",pid);
printf("CH: pid of parent's id = %d\n",getppid());
}
else {
/* parent's code */
printf("PAR: inside parent; pid of child is %d\n",pid);
printf("PAR: pid of parents' parent = %d\n",getppid());
sleep(20);
}

/* common code */
printf("COMMON: printed by process with pid = %d\n",getpid());
}
展开
 我来答
kaladijia
2015-09-08 · TA获得超过4326个赞
知道小有建树答主
回答量:1737
采纳率:25%
帮助的人:518万
展开全部
fork()应该是Linux操作系统的函数。

从#include <sys/signal.h>和fork()上判断,这个程序应该是Linux操作系统的应用程序。

Windows上应该用CreateProcess创建进程

获取进程ID用
DWORD GetWindowThreadProcessld(HWND hwnd,LPDWORD lpdwProcessld)

hWnd:窗口句柄。
lpdwProcessld:接收进程标识的32位值的地址。如果这个参数不为NULL,GetWindwThreadProcessld将进程标识拷贝到这个32位值中,否则不拷贝。

返回值:返回值为创建窗口的线程标识。
认不倒你
2015-09-08 · TA获得超过666个赞
知道小有建树答主
回答量:820
采纳率:50%
帮助的人:361万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

int main()
{
for(int j=0; j<5; ++j) {
int pid = fork();
if ( pid == 0 ) { // child
printf("j : %d, pid : %d.\n",j, getpid() );
exit (0);
} else if ( pid < 0 ) { // error
exit ( -1);
}
}

for(int i=0; i<5; ++i) {
wait(NULL);
}

printf("End !\n");

return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式