ChinaUnix.net
相关文章推荐:

fork和tfork

本帖最后由 vdsvs 于 2011-04-28 23:32 编辑 刚才看了相关资料,说vfork创建的父子进程是共享数据段的,而fork创建的父子进程数据段是拷贝不是共享,那意味着vfork创建后可以共享一些全局变量,那vfork 创建的父子进程之间的通信就不用什么管道、共享等方式了吧,不知道说的对不???

by vdsvs - Linux环境编程 - 2011-04-29 10:29:00 阅读(1901) 回复(3)

相关讨论

#!/usr/bin/perl $SIG{USR1} =\&yoursub; my $pid; $pid = fork(); if ( $pid ==0 ) { exec("./test1.pl"); //怎么这用exec不能执行,而用``可以执行呢? #`./test1.pl`; } else { sleep 5; print "pid:$pid\n"; system("kill -USR1 $pid"); wait; } sub yoursub { print "hello\n"; }

by demil - Perl - 2010-08-18 19:49:37 阅读(1717) 回复(1)

请教各位大侠,我想用tk实现这样一个功能: 点击button stop后,button的item显示为start,同时label中的text停止滚动显示,然后点击button start,label的text会继续显示。 以下是我写的, 发现在tk中fork时,sleep 没有生效,而且感觉变量$but改变也没有生效,如果不用fork直接使用信号,那么就会阻塞,sleep 10s后,button才能改变,而不是按下去就改变, 是什么问题呢?关于进程、事件驱动这块我理解的还不深入,希望学习下。 #!...

by demil - Perl - 2010-08-16 15:57:06 阅读(1694) 回复(1)

vfork用于创建一个新进程,而该新进程的目的是exec一个新进程,vforkfork一样都创建一个子进程,但是它并不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec,于是也就不会存放该地址空间。不过在子进程中调用exec或exit之前,他在父进程的空间中运行。 vforkfork之间的另一个区别是: vfork保证子进程先运行,在她调用exec或exit之后父进程才可能被调度运行。如果在调用这两个函数之前子进程依赖于父进程的进...

by sy2n - Linux文档专区 - 2010-01-30 23:02:44 阅读(935) 回复(0)

main() { printf("before fork"); if(fork()=0) .... else if(...) .... else ... exit(0); } 编译并运行 <1>$test before fork <2>$test>abc $cat abc before fork before fork 为什么在重定向中,能输出两次? 输出到终端是有行缓冲的,但好像也不能解释通

by chenzhanyiczy - C/C++ - 2008-05-31 23:58:07 阅读(2487) 回复(15)

作者: [email=rezaie@softhome.net]Wilbur Lang[/email] 在 UNIX 系统中,用户创建一个新进程的唯一方法就是调用系统调用 fork。调 用 fork 的进程称为父进程,而新创建的进程叫做子进程。系统 调用的语法格式: [color="#0066ff"] pid = fork(); 在从系统调用 fork 中返回时,两个进程除了返回值 pid 不同外,具有 完全一样的用户级上下文。在子进程中,pid 的值为零。在系统启动时由核心内 部地创建的进程0是唯一不通...

by wqfhenanxc - Linux文档专区 - 2008-04-03 08:36:33 阅读(910) 回复(0)

[quote] #include ; #include ; main () { pid_t pid; char *aa; aa=(char *)malloc(10); strcpy(aa,"hello"); pid=fork(); if (pid < 0) printf("error in fork!"); else if (pid == 0) /* child process */ { printf("child process, aa= %s\n",aa); free(aa); ...

by trainee - C/C++ - 2006-10-10 06:55:39 阅读(3788) 回复(20)

各位大虾下面的2个程序的有什末不同吗? 既然exit(0)关闭了标准I/O为什末最后还能显示"vfork test"? int main(void) { if(vfork()==0) { exit(0); } printf("vfork test\n"); exit(0); } int main(void) { if(vfork()==0) { _exit(0); } printf("vfork test\n"); exit(0); }

by rune_zhang - C/C++ - 2005-11-28 18:15:23 阅读(1210) 回复(5)

linux 从task0到执行一个可执行程序的创建,可执行程序其中的代码数据是什么时候调入内存的?

by su_king - 内核源码 - 2013-01-12 12:58:01 阅读(2009) 回复(8)

程序如下: count = 0; pid_t pid; pid = fork(); count++; printf("count = %d\n",count); 目的是测试vforkfork的区别,按说明,vfork是子进程先执行,父进程后执行。那么按设想,这里应该打印2次count,分别是count=1count=2,但实际是出现了死循环,为什么?

by 来瘟司机 - Linux环境编程 - 2012-04-26 21:22:17 阅读(1221) 回复(2)

下面的代码为什么子进程中没有输出父进程拷贝的内容呢:em14: [code] #include #include #include #include int main(void) { char *p = NULL; pid_t pid; p = (char *) malloc(20); memset(p, '\0', 20); if ((pid = fork()) > 0) { strcpy(p, "hello"); } else if (pid == 0) { sleep(2...

by fanyf888 - C/C++ - 2008-02-22 17:20:02 阅读(3433) 回复(19)