1.在linux下编写一个应用程序,命名为an_ch2_1b。这个程序不断地输出如下行: Those output come from child,[系统时间] 另外写一个应用程序,命名为an_ch2_1a。这个程序创建一个子进程,执行an_ch2_1b。这个程序不断地输出如下行: Those output come from child,[系统时间] 观察程序运行的结果,并对你看到的现象进行解释。
时间: 2024-02-15 09:05:56 浏览: 88
下面是代码实现:
an_ch2_1b.cpp
```cpp
#include <iostream>
#include <ctime>
#include <unistd.h>
using namespace std;
int main() {
while (true) {
time_t now = time(0);
char* dt = ctime(&now);
cout << "Those output come from child," << dt;
sleep(1);
}
return 0;
}
```
an_ch2_1a.cpp
```cpp
#include <iostream>
#include <sys/types.h>
#include <unistd.h>
#include <cstdio>
#include <stdlib.h>
using namespace std;
int main() {
pid_t pid;
pid = fork();
if (pid == -1) cout << "fail to create" << endl;
else if (pid == 0) system("./an_ch2_1b");
else {
while (true) {
time_t now = time(0);
char* dt = ctime(&now);
cout << "Those output come from parent," << dt;
sleep(1);
}
}
return 0;
}
```
程序运行时,an_ch2_1a程序会创建一个子进程,子进程执行an_ch2_1b程序。父进程和子进程都会不断地输出当前的系统时间,并在前面加上一段提示信息。
因为父进程和子进程是并发执行的,所以输出结果可能是交替出现的。由于父进程和子进程输出的提示信息不同,因此可以根据提示信息来区分输出结果是来自父进程还是子进程。
总之,这个程序演示了如何使用fork()函数创建子进程,并在父子进程中并发执行不同的代码,从而实现多任务处理。同时也展示了多任务处理中的并发和交替执行的特点。
阅读全文