1.Linux下用C语言编写一个应用程序,命名为b。这个程序不断地输出如下行:Those output come from child,[系统时间] 。另外写一个应用程序,命名为a。这个程序创建一个子进程,执行b。 观察程序运行的结果,并对你看到的现象进行解释。
时间: 2024-02-28 21:54:03 浏览: 41
第一讲 Linux下C语言程序开发
4星 · 用户满意度95%
可以使用C语言中的fork()函数创建子进程,然后在子进程中使用系统时间函数获取当前时间并输出到终端。在父进程中使用wait()函数等待子进程结束。下面是一个示例代码:
b.c:
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
int main()
{
while(1)
{
time_t t = time(NULL);
printf("Those output come from child, [%s]\n", ctime(&t));
sleep(1);
}
return 0;
}
```
a.c:
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main()
{
pid_t pid;
pid = fork();
if(pid < 0)
{
fprintf(stderr, "Fork Failed\n");
exit(-1);
}
else if(pid == 0)
{
execl("./b", "b", NULL);
}
else
{
wait(NULL);
printf("Child process finished\n");
}
return 0;
}
```
在终端中编译两个程序:
```
gcc -o b b.c
gcc -o a a.c
```
然后运行a程序:
```
./a
```
可以看到b程序输出了一系列类似于 "Those output come from child, [Thu May 20 14:47:23 2021]" 的信息,每秒钟输出一次。a程序等待子进程结束后输出 "Child process finished"。
解释:通过fork()函数创建了一个子进程,在子进程中执行了输出系统时间的操作,在父进程中使用wait()函数等待子进程结束。由于子进程和父进程是独立的进程,因此它们在终端上的输出也是独立的,不会互相影响。
阅读全文