- 论坛徽章:
- 0
|
本帖最后由 david0 于 2011-10-24 20:56 编辑
我写个程序,用于输入:n
(在父进程中输入)
输出:从1到n的整数
(子进程负责打印)
父进程打印子进程的PID,然后等待子进程结束,最后输出child complete
退出系统
vi lianxi2.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(){
int mainProcessID = getpid();//通过getpid函数获取主进程的ID。
int n = 0;
printf("请输入数值n");
scanf("%d", &n);
int childProcessID = fork();//通过fork函数创建子进程并同时获取进程ID
//注意此处,主、子进程都将执行以下代码,因此按照题意需要进行处理
if(getpid() == childProcessID){
for(int i=0; i<n; i++){
printf("%d\r\n", i+1);
}
}
else{
wait(childProcessID);//通过wait方法让主线程等待
printf("Child complete");
exit(0);
}
}
在redhat linux下编译时报错
# gcc -o lianxi2 lianxi2.c
lianxi2.c: In function `main':
lianxi2.c:15: error: 'for' loop initial declaration used outside C99 mode
在gcc加上-std=c99时也报warning
# gcc -std=c99 -o lianxi2 lianxi2.c
lianxi2.c: In function `main':
lianxi2.c:20: warning: implicit declaration of function `wait'
请问如何修改? |
|