|
今天学习到了用fork();函数在linux系统中建立一个进程。进程的概念很有趣,虽然我还不大清楚建立子进程的意义在哪里。
子进程建立以后,会与父进程同时执行相同的代码,虽说是同时,但对于单核CPU,或ARM来说,都是一样的,因为同一时刻,CPU只执行一个进程而已。建立两个进程,还要费时间去进行进程的切换,对于提高效率,似乎没什么意义。
为了了解创建进程后的程序运行,我做了下面的测试代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
int main(void)
{
pid_t pid;
pid = fork();
if(pid < 0)
printf("error");
else if(pid == 0){
while(1){
printf("11\n");
sleep(1);
}
}
else{
while(1){
printf("22\n");
sleep(1);
}
}
return 0;
}
编译运行后,就是一直发送11和22,再打开一个终端,用#ps -elf查看,确实有两个进程在运行。重复运行了几次,先显示11和先显示22的情况都有,说明父进程和子进程的运行顺序是不确定的。