为什么这个程序打印“叉”4次? #include <stdio.h> #include <unistd.h> int main(void) { fork() && (fork() || fork()); printf("forked!\n"); return 0; }
fork和exec什么区别?
假设我有一个产生一个subprocess的进程。 现在,当父进程出于任何原因(通常或exception,通过kill,^ C,声明失败或其他),父进程退出,我希望subprocess死亡。 如何正确地做到这一点? 一些类似的问题在stackoverflow: (之前问过) 当父进程执行时,如何导致subprocess退出? (稍后问) 是否使用fork()创build的subprocess在父进程被终止时自动终止? Windows上的一些类似的问题在stackoverflow: 如何在Windows中自动销毁subprocess? 当父进程被终止时,终止subprocess
操作系统:Linux,语言:纯粹的C 一般情况下,我正在学习C编程,而在UNIX下C编程则是一个特例。 在使用fork()调用之后,我检测到printf()函数的一个奇怪的(对我来说)行为。 码 #include <stdio.h> #include <system.h> int main() { int pid; printf( "Hello, my pid is %d", getpid() ); pid = fork(); if( pid == 0 ) { printf( "\nI was forked! :D" ); sleep( 3 ); } else { waitpid( pid, NULL, 0 ); printf( "\n%d was forked!", pid ); } return […]