【创建多个子进程】如题。。。。。。。。。。。。。。。

一叶孤星坠空城 2014-04-03 04:33:43

1.父进程使用系统调用fork()创建两个或更多的子进程
2.子进程要输出自己的进程标识符和属于哪个父进程,然后输出3行提示信息。
3.父进程显示自己的进程ID和一些提示信息,然后调用waitpid()等待多个子进程结束,并在子进程结束后显示输出提示信息表示程序结束。

这怎么写?好纠结
...全文
135 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
derekrose 2014-04-03
  • 打赏
  • 举报
回复
楼主下次不许这样赤裸裸的求代码! 下不为例 自己好好思考
  • 打赏
  • 举报
回复
引用 6 楼 cangyingzhijia 的回复:

#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(void)
{
    pid_t pid;
    int status;
    int process_num = 5;
    pid_t child_pids[process_num];
    for(int i = 0; i<process_num; ++i){
        pid = fork();
        if(pid == 0)
        {   //child process
            printf(" %d %d \n", getpid(), getppid());
            exit(0);
        }
        else if( pid > 0 )
        {  //parent process
            child_pids[i] = pid;
        }
        else{
            printf("fork error:%s", strerror(errno));
            exit(1);
        }
    }
    for(int i = 0; i<process_num; ++i){
        waitpid(child_pids[i],NULL , 0);
        printf("process exit:%d\n", child_pids[i]);
    }
    return 0;
}

GOOD !! 学习了,多谢!!!
苍蝇①号 2014-04-03
  • 打赏
  • 举报
回复

#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(void)
{
    pid_t pid;
    int status;
    int process_num = 5;
    pid_t child_pids[process_num];
    for(int i = 0; i<process_num; ++i){
        pid = fork();
        if(pid == 0)
        {   //child process
            printf(" %d %d \n", getpid(), getppid());
            exit(0);
        }
        else if( pid > 0 )
        {  //parent process
            child_pids[i] = pid;
        }
        else{
            printf("fork error:%s", strerror(errno));
            exit(1);
        }
    }
    for(int i = 0; i<process_num; ++i){
        waitpid(child_pids[i],NULL , 0);
        printf("process exit:%d\n", child_pids[i]);
    }
    return 0;
}

  • 打赏
  • 举报
回复
引用 4 楼 max_min_ 的回复:
[quote=引用 2 楼 u012104329 的回复:] [quote=引用 1 楼 max_min_ 的回复:] getpid getppid 就这两个接口函数了! 很简单的基础的题目了。。。
怎么写呢?[/quote]

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(void)
{
    pid_t pid;
    int status;
    pid = fork();
    if(pid == 0)
    {   
        printf(" %d %d \n", getpid(), getppid());
        // 打印信息
    }   
    else if( pid > 0 ) 
    {   
        printf(" %d \n", getpid());
        // 打印信息
    }   
    else 
        // failed 
        
    waitpid(pid ,NULL , 0); 
    return 0;
}
[/quote] 只创建了一个子进程嘛.....要两个以上
max_min_ 2014-04-03
  • 打赏
  • 举报
回复
引用 2 楼 u012104329 的回复:
[quote=引用 1 楼 max_min_ 的回复:] getpid getppid 就这两个接口函数了! 很简单的基础的题目了。。。
怎么写呢?[/quote]

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(void)
{
    pid_t pid;
    int status;
    pid = fork();
    if(pid == 0)
    {   
        printf(" %d %d \n", getpid(), getppid());
        // 打印信息
    }   
    else if( pid > 0 ) 
    {   
        printf(" %d \n", getpid());
        // 打印信息
    }   
    else 
        // failed 
        
    waitpid(pid ,NULL , 0); 
    return 0;
}
Pump天天学习 2014-04-03
  • 打赏
  • 举报
回复
APUE上有类似的例子,参考下吧
  • 打赏
  • 举报
回复
引用 1 楼 max_min_ 的回复:
getpid getppid 就这两个接口函数了! 很简单的基础的题目了。。。
怎么写呢?
max_min_ 2014-04-03
  • 打赏
  • 举报
回复
getpid getppid 就这两个接口函数了! 很简单的基础的题目了。。。

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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