1、编写程序,用系统调用fork()创建两子进程。父进程显示10次字符串“father”,子进程1显示10次字符串“son”,子进程2显示10次字符串“daughter”。要求用C语言写出完整的程序。
#include #include main() { int i,p1,p2; while((p1=fork())==-1); //创建一个子进程p1 ——2分 if(p1==0) for(i=0;i<10;i++) { printf("son%d\n",i); // ——2分 } else { while((p2=fork())==-1); //创建一个子进程p2——2分 if(p2==0) for(i=0;i<10;i++) { printf("daughter%d\n",i); // ——2分 } else for(i=0;i<10;i++) { printf("father%d\n",i);// ——2分 } } }
举一反三
- 编写程序,使用系统调用fork()创建两个子进程,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b” 和“c”。要求用C语言写出完整的程序。[简答题] [10分]
- 实验目的 通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。 实验内容 [br][/br] (1) 了解系统调用fork()、execvp()和wait()的功能和实现过程。 (2) 编写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符串“parent:”和自己的标识数,而子进程则重复显示字符串“child:”和自己的标识数。 (3) 编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用execvp()更换自己的执行代码,新的代码显示“new program.”。而父进程则调用wait()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。 [br][/br] 思考 (1)系统调用fork()是如何创建进程的? (2)当首次将CPU调度给子进程时,其入口在哪里? (3)系统调用exec()是如何更换进程的可执行代码的? (4)系统调用exit()是如何终止一个进程的? (5)对一个应用,如果多个进程的并发执行来实现,与单个进程来实现有什么不同?
- 在程序中调用fork()函数创建进程,父子进程会获取不同的返回值,下面关于fork()函数的说法,错误的是。 A: 若子进程创建成功,父进程的fork()返回子进程pid,子进程的fork()返回0。 B: 若子进程创建成功,子进程的fork()返回子进程pid,父进程的fork()返回0。 C: 若子进程创建失败,父进程的fork()函数返回-1。 D: 若子进程创建成功,子进程将从fork()函数调用处之后的代码开始执行。
- 用“+”可以实现字符串的拼接,用- 可以从一个字符串中去除一个字符子串
- 以下关于fork的描述正确的是( )。 A: fork创建的子进程和父进程并发执行 B: fork创建的子进程共享父进程的变量 C: fork创建的子进程和父进程完全一样 D: fork创建的子进程执行的程序语句和父进程相同
内容
- 0
一个字符串中任意个连续字符成为该串的子串。
- 1
编写一个判定一字符串是否是另一个字符串子串的程序。
- 2
【多选题】关于创建新进程的描述正确的是() A. fork() 创建子进程中,会复制父进程的所有变量和内存 B. 子进程的fork()返回0 C. 父进程的fork()在创建子进程成功后,返回子进程标识符 D. fork() 创建子进程中,会复制父进程的页表
- 3
设S 是一个长度为10 的字符串,其中字符各不相同,则S 中不同的非平凡子串的总数为________个。所谓非平凡子串指的是非空且不同于串本身的子串
- 4
对于字符串S=’abcde’,请问:(1)字符串S的长度是多少?(2)字符串S的子串有几个,并列出所有子串?