Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SIGCONT能唤醒睡眠过程吗? #包括 #包括 #包括 #包括 无效信号处理器(int signo) { 返回; } int main() { pid_t pid; pid=getpid(); 信号(SIGCONT,信号处理器); printf(“%d\n”,pid); 睡眠(100); printf(“你好”); 返回0; }_C_Linux_Process_Operating System - Fatal编程技术网

SIGCONT能唤醒睡眠过程吗? #包括 #包括 #包括 #包括 无效信号处理器(int signo) { 返回; } int main() { pid_t pid; pid=getpid(); 信号(SIGCONT,信号处理器); printf(“%d\n”,pid); 睡眠(100); printf(“你好”); 返回0; }

SIGCONT能唤醒睡眠过程吗? #包括 #包括 #包括 #包括 无效信号处理器(int signo) { 返回; } int main() { pid_t pid; pid=getpid(); 信号(SIGCONT,信号处理器); printf(“%d\n”,pid); 睡眠(100); printf(“你好”); 返回0; },c,linux,process,operating-system,C,Linux,Process,Operating System,当您执行此代码并将SIGCONT信号传递给进程时,它将在睡眠状态之外输出“Hello”并终止 另一方面,如果删除了上述信号处理程序并执行了代码,则即使将SIGCONT交付给进程,也不会唤醒它 有什么区别 我让进程返回其pid,以便于手动交付SIGCONT。当处理程序就位时,睡眠失败,并将errno设置为EINTR(即,它被中断)。当处理器未就位时,信号不会中断睡眠。如果进程因SIGSTOP而处于“休眠”状态,SIGCONT会将其唤醒(但不会中断sleep调用)。这里“sleep”一词有两种不同的

当您执行此代码并将SIGCONT信号传递给进程时,它将在睡眠状态之外输出“Hello”并终止

另一方面,如果删除了上述信号处理程序并执行了代码,则即使将SIGCONT交付给进程,也不会唤醒它

有什么区别


我让进程返回其pid,以便于手动交付SIGCONT。

当处理程序就位时,睡眠失败,并将errno设置为EINTR(即,它被中断)。当处理器未就位时,信号不会中断睡眠。如果进程因SIGSTOP而处于“休眠”状态,SIGCONT会将其唤醒(但不会中断
sleep
调用)。这里“sleep”一词有两种不同的用法。当处理程序就位时,sleep失败并将errno设置为EINTR(即,它被中断)。当处理器未就位时,信号不会中断睡眠。如果进程因SIGSTOP而处于“休眠”状态,SIGCONT会将其唤醒(但不会中断
sleep
调用)。这里“睡眠”一词有两种不同的用法。
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <stdio.h>

void signal_handler(int signo)
{
        return;
}

int main()
{
        pid_t pid;

        pid = getpid();

        signal(SIGCONT, signal_handler);

        printf("%d\n", pid);

        sleep(100);

        printf("hello");

        return 0;
}