向子进程发送SIGTSTP信号可以通过调用kill函数来实现。kill函数的原型如下:
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int sig);
其中,pid是要发送信号的进程ID,sig是要发送的信号类型。对于SIGTSTP信号,其对应的宏定义为SIGTSTP。
在向子进程发送SIGTSTP信号之前,需要先获取子进程的进程ID。可以通过fork函数创建子进程,并在子进程中调用getpid函数获取自己的进程ID。然后,在父进程中调用kill函数向子进程发送SIGTSTP信号。
以下是一个示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
int main() {
pid_t pid;
pid = fork();
if (pid < 0) {
perror("fork");
exit(1);
} else if (pid == 0) {
// 子进程
printf("子进程ID:%d\n", getpid());
while (1) {
// 子进程执行的操作
}
} else {
// 父进程
printf("父进程ID:%d\n", getpid());
sleep(1); // 等待子进程输出子进程ID
kill(pid, SIGTSTP); // 向子进程发送SIGTSTP信号
}
return 0;
}
在上述示例代码中,父进程通过调用kill函数向子进程发送SIGTSTP信号。子进程在接收到SIGTSTP信号后,会暂停执行,并进入停止状态。
领取专属 10元无门槛券
手把手带您无忧上云