linux fork创建进程失败

已举报 回答
linux fork创建进程失败
问在线客服
扫码问在线客服
  • 回答数

    8

  • 浏览数

    4,969

8个回答 默认排序
  • 默认排序
  • 按时间排序

已采纳
是内存空间的问题。
取消 评论
#include unistd.h
#include sys/types.h

int main (int argc, char *agrv[])
{
pid_t pid;
pid=fork();

if (pid 0)
printf(error in fork!);
else if (pid == 0)
printf(i am the child process, my process id is %d\n,getpid());
else
printf(i am the parent process, my process id is %d\n,getpid());

return 0;
}
取消 评论
并列的是宏观的,实际运行还是有先后的,可以根据waitpid();的返回状态进行统计,不过那时都结束了
取消 评论
你的代码是什么样的?fork一次产生一个子进程,返回两次,如果你没有if else,直接fork();fork();这样调用,那么会产生四个进程,第二次fork产生一个父进程的子进程,一个子进程的子进程
取消 评论
创建子进程才能多道程序并发执行,linux初始化的时候会创建swap进程、然后是init进程和一个init进程的兄弟进程,所有的进程(运行的程序)都是从父进程演化出去的,你可以看看proc里的东西,写个程序打印出各个进程的父进程~网上有源代码的,要的话我给你咱要先搞明白进程究竟是什么,进程是资源分配的单位,是运行的程序。既然是运行的程序,一个进程自然只能代表一个程序,多道程序设计自然而然就有了多进程的概念。举个例子,多进程(线程)下载,我们可以给一个需要下载的资源分片,多个进程从不同的片分时下载,这样就提高了下载速度,因为对一个程序分配的更多的资源,你试试开迅雷的时候打开个网页,保证你觉得奇卡无比,因为网络带宽(资源)被迅雷的多个进程占用了。其实在本地的多进程程序并不多见,比如word算是个典型的多进程程序,有个进程接受你的键盘输入,有拼写检查进程,有显示进程等等。大多数都用到网络上了,比如服务器。一台服务器要在“同一时间”处理来自很多客户端的请求,这就必须使用多进程。
取消 评论
共享是同一个区域 但是fork后相当于复制了一份 也就相当于一个副本 所以 在以后的程序执行 父进程改变父进程的数据 子进程改变子进程的数据 所以不能说共享 他们相同的是整个程序
取消 评论
调用fork()语句创建子进程成功之后,子进程和父进程一样执行fork()语句之后的代码、你的这个程序中首先在父进程中语句putchar(‘x’)是输出字符x的、然后创建了子进程,fork()语句返回的是子进程的ID号、所以先执行putchar(‘a’)输出字符a,然后执行 putchar(‘y’)输出字符y,父进程执行到这里结束了。然后是子进程执行,先putchar(‘b’)输出字符b,然后是putchar(‘y’)输出字符y;整个程序执行完毕!
取消 评论
你调用getpid()是函数,要在后面加();
getppid()同样需要()。已测
取消 评论
ZOL问答 > linux fork创建进程失败

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?