fork函数详解?

aaassd 2004-01-02 01:09:42
在执行fork函数的时候内存都是怎么动作的?
...全文
555 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaassd 2004-01-06
  • 打赏
  • 举报
回复
为什么ps -ef|grep a.out
都查不出呢?
hotcat 2004-01-06
  • 打赏
  • 举报
回复
fork生成一个子进程,子进程也有一个fd,但是值为0,父进程的fd被置成子进程的pid.
aaassd 2004-01-06
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
#include <unistd.h>
#include <signal.h>
int fd = 0;
void func(int sig)
{
signal(sig,func);
if(sig == SIGALRM)
cout << "I an 0;" << endl;
if(sig == SIGUSR2){
cout << "id sigusr2" << endl;
kill(getppid(),SIGALRM);
}
}
void funcp(int sig)
{
signal(sig,funcp);
if(sig == SIGUSR1){
kill(fd,SIGALRM);
cout << "pid sigusr1" << endl;
}
if(sig == SIGALRM)
cout << "I an pp;" << endl;
}
int main()
{
fd = fork();
if(fd == 0){
signal(SIGUSR2,func);
signal(SIGALRM,func);
signal(SIGUSR1,SIG_IGN);
while(true){
pause();
}
}else if(fd >0){
signal(SIGALRM,funcp);
signal(SIGUSR1,funcp);
signal(SIGUSR2,SIG_IGN);
//cout << fd << endl;
while(true)
pause();
}else {
cout << "error!" << endl;
exit(0);
}
}
怎么可以查出我的子进程,用了注消的那句就可以查出,这是为什么?
passingguy 2004-01-04
  • 打赏
  • 举报
回复
是啊,看看apue,一切迎刃而解
zhew_1999 2004-01-04
  • 打赏
  • 举报
回复
<<unix环境高级编程》中讲的很清楚,
看看就知道了。
aaassd 2004-01-03
  • 打赏
  • 举报
回复
parent的fork返回子进程的pid(当然>0),子进程的fork返回0.
为什么这两个返回时间是随机的?
内部是\怎样实现的呢?
jian 2004-01-02
  • 打赏
  • 举报
回复
linux kernel project ,exercise 2。中文版叫,《linux内核实习》
aaassd 2004-01-02
  • 打赏
  • 举报
回复
有谁用execl()做过类似shell一样的东西吗?
louyp 2004-01-02
  • 打赏
  • 举报
回复
子进程继承父进程这些东西:
用户id
控制终端。
当前工作目录。
根目录。
文件方式创建屏蔽字。
信号屏蔽和排列。
对任一打开文件描述符的在执行时关闭标志。
环境。
连接的共享存储段。
资源限制。
aaassd 2004-01-02
  • 打赏
  • 举报
回复
fork之后就有了两个独立的进程:parent和child,两个进程从fork处分道扬镳,
parent的fork返回子进程的pid(当然>0),子进程的fork返回0。

两个独立的子进程在内存中是怎么样的,什么数据是共享的呢?
还是不相干的两个进程?

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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