用c语言编程实现,wait,signal
时间: 2024-02-06 22:08:56 浏览: 203
在 C 语言中,wait() 和 signal() 是两个用于进程同步的函数。wait() 函数用于在父进程中等待子进程的结束,而 signal() 函数则用于向指定进程发送信号。
下面是它们的简单实现:
wait() 函数:
```
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main()
{
pid_t pid;
int status;
if ((pid = fork()) == -1)
{
perror("fork");
return 1;
}
if (pid == 0) // 子进程
{
printf("This is child process.\n");
sleep(5);
return 0;
}
else // 父进程
{
printf("This is parent process.\n");
wait(&status); // 等待子进程结束
printf("Child process terminated.\n");
}
return 0;
}
```
signal() 函数:
```
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void handler(int signum)
{
printf("Received signal %d.\n", signum);
}
int main()
{
signal(SIGINT, handler); // 注册信号处理函数
printf("Waiting for signal...\n");
while (1) // 无限循环等待信号
{
sleep(1);
}
return 0;
}
```
注意,这里只是简单的演示,实际应用中需要更加完善的错误处理和逻辑判断。
阅读全文