编写一个可以显示文本字符串(仅由26个字母和空格组成)的程序。该程序应派生27个工作进程。每个工作进程都运行一个无限循环,在该进程中,它等待来自控制器(即父进程)的信号,休眠1秒,打印其预定义字符,向控制器发出信号,然后再次阻塞。控制器从键盘上读取一个字符串,然后以正确的顺序向工人发出信号以显示该字符串 以下是我的代码,但是我没有得到输出,它没有打印任何内容。
setCurrentItemId
答案 0 :(得分:0)
首先,切勿使用fun getActionIntent(uri : String?) {
val phoneIntent = Intent(Intent.ACTION_VIEW)
phoneIntent.data = Uri.parse("tel:$uri")
phoneIntent.setPackage("com.whatsapp")
ctxt.startActivity(Intent.createChooser(phoneIntent, "Send Sms"))
}
或类似的其他信号进行自定义使用。首选使用SIGCONT
和SIGUSR1
。 SIGUSR2
具有一些特殊的语义。
现在,即使将SIGCONT
更改为CONT
,使用USR1
的方式也是一个问题。子进程唤醒后,它将被杀死,因为您没有捕获到信号。手册说:
pause()
使调用进程(或线程)进入休眠状态,直到出现 传递的信号会终止该过程或导致 调用信号捕捉功能。
孩子们永远不会发出正确的信号,因为您没有将pause()
设置为正确的值。
您将永远不会经历正确的打印,因为写入被缓冲并且没有刷新。使用ppid
或printf("%c",myChar); fflush(stdout);
这将导致类似的事情
printf("%c\n",myChar);