linux环境c语言编程!问题棘手!高手进!

linux环境c语言编程!问题棘手!高手进!,第1张

【第一个问题】

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的外面就可以了。

但你这个代码不完整,最后没有关闭句柄的语句,应该把这些内容补充完整。良好的编码习惯,要把打开的文件、句柄,分配的内存等,都关闭、释放掉。不要想着程序结束会自动释放。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8292288.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存