
argv[i]越界了,不能保证都是null,改成这样
for(i=1i<argci++)
demo[i-1]=atoi(argv[i])
for(--ii<3++i)
demo[i]=10
【第二个问题】
我的理解是第一个子进程wakeup的瞬间,其他的子进程还是sleep,因此第一个子进程执行了printf
优先级再高的进程sleep了也抢不过优先级低的活动进程
因此最好保持3个子进程同时活动
else//子进程执行代码
{
sleep(1)//为了父进程顺利启动3个子进程,sleep还是留着吧
for(i=1ii++)//保持活动一段时间
//报告进程号和优先级
printf("child %d priority=%d\n",getpid(),getpriority(PRIO_PROCESS,0))
exit(EXIT_SUCCESS)
//return EXIT_SUCCESS
}
if [ ${#*} -eq 3 ]echo "$*"
else
echo error,invalid arguments count >2
fi read -p "please input A B(b) C(quit)" arg
case $arg in
A) echo "good morning"
break
B|b) echo "good afternoon"
break
C|quit) exit
break
*) echo "error, input must in A B(b) C(quit)" >2
break
esac
你这个服务端的逻辑有问题(当然也可以说是客户端逻辑有问题,这是相对的)。客户端使用的是长连接,也就是一次连接,多次通话。而服务端则是短连接,一次连接,一次通话,然后就断开了。
想实现你的需求很 简单,把服务端的accept放在while的外面就可以了。
但你这个代码不完整,最后没有关闭句柄的语句,应该把这些内容补充完整。良好的编码习惯,要把打开的文件、句柄,分配的内存等,都关闭、释放掉。不要想着程序结束会自动释放。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)