操作系统概念 第三章 编程题 3.14

Linux 下c语言(创建进程)实现Collatz猜想问题

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h> 

int main(int argc,char *argv[])
{
	pid_t pid;
	int n;
	
	//argc为传递参数的个数,argv[0]为当前执行文件名,所以argc应该>1 
	if(argc==1){
		fprintf(stderr,"Usage:./a.out<starting value>\n");
	}
	//将字符型变量转换成整型变量 
	n=atoi(argv[1]);
	//创建进程 
	pid=fork();
	
	if(pid<0){
		fprintf(stderr,"Fork Failed");
		return -1;
	}	
	else if (pid==0){//子进程 
		printf("%d ",n)while(n!=1){
			if(n%2==0){
				n=n/2;
			}
			else{
				n=n*3+1;
			}
			printf("%d ",n);
		}
	}
	
	else{//父进程 
		wait(NULL);//等待子进程运行完毕 
		printf("Child Complete");
	}
	
	return 0;
 }  

gcc编译
运行结果

资料:
1:帮助理解进程概念:
https://blog.csdn.net/u013007900/article/details/49964343
https://blog.csdn.net/Misszhoudandan/article/details/80032442
2:帮助理解main函数传递参数:https://blog.csdn.net/grey_csdn/article/details/65513394

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值