示例#1
0
文件: signal.c 项目: fixos/fixos
int sys_kill(pid_t pid, int sig) {
	if(sig>=0 && sig<SIGNAL_MAX && _trans_number2index[sig] != _SIGUNDEF) {
		struct process *dest;

		printk(LOG_DEBUG, "signal: kill(%d, %d)\n", pid, sig);

		// depending pid value, this can be a gid or a pid
		if(pid > 0) {
			dest = process_from_pid(pid);
			if(dest != NULL)
				signal_raise(dest, sig);
			else
				return -EPERM;
		}
		else {
			// process group
			pid = pid==0 ? _proc_current->pgid : -pid;
			signal_pgid_raise(pid, sig);
		}
	}
	else {
		return -EINVAL;
	}

	return 0;
}
示例#2
0
文件: signal.c 项目: fixos/fixos
void signal_pgid_raise(pid_t pgid, int sig) {
	struct process *dest;

	for_each_process(dest) {
		//printk(LOG_DEBUG, "pgid_raise: pid %d, pgid %d\n", dest->pid, dest->pgid);
		if (dest->pgid == pgid)
			signal_raise(dest, sig);
	}
}
示例#3
0
void Tray::trayiconActivated(QSystemTrayIcon::ActivationReason reason)
{
    switch (reason)
    {
    //单击托盘图标
    case QSystemTrayIcon::Trigger:
        break;
    case QSystemTrayIcon::DoubleClick:
        //双击托盘图标
        emit signal_showNormal();
        emit signal_raise();
        break;
    default:
        break;
    }
}