#include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(){ pid_t a; a=fork(); printf("Tonly is coming ---%d\n",a); printf("1111\n"); while(1){ } return 0; }
时间: 2023-11-20 17:13:39 浏览: 146
这段代码可以正常编译运行,其作用是创建一个子进程,并在父子进程中分别输出当前进程的 ID(父进程输出父进程 ID,子进程输出子进程 ID),然后进入一个死循环。
需要注意的是,父进程和子进程是并发执行的,因此无法确定它们的输出顺序。在一些系统中,子进程的输出可能会先于父进程的输出,因此输出结果可能会与我们的预期不同。
如果想要让父进程等待子进程执行完毕后再继续执行,可以使用 `wait` 函数。例如:
```
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main(){
pid_t pid;
pid = fork();
if (pid == 0){ // 子进程
printf("I'm child process, my pid is %d\n", getpid());
// 子进程执行完毕后退出
return 0;
} else if (pid > 0){ // 父进程
printf("I'm parent process, my pid is %d\n", getpid());
// 父进程等待子进程执行完毕
wait(NULL);
printf("Child process has exited\n");
} else { // fork 出错
perror("fork");
return 1;
}
return 0;
}
```
该程序会先输出父进程的 ID,然后创建一个子进程,子进程输出自己的 ID 后退出,父进程等待子进程执行完毕后输出一条信息。
阅读全文