如何在守护进程中使用 ioctl?

问题描述

我按照这个 link 在 Linux 中创建了一个守护进程。它运行良好,直到我开始调用 ioctl。似乎对 ioctl 的任何调用都被完全忽略了。我正在使用 ioctl 来设置终端和键盘模式。示例代码如下。该代码无需将其作为守护程序运行即可工作。我是否必须做其他事情才能使 ioctl 正常工作?

int main(int argc,char **argv)
{
    skeleton_daemon(); // Function is the exact same as in the link
    int term = open("/dev/tty1",O_RDWR);

    syslog(LOG_NOTICE,"First daemon started.");
    sleep(5);
    

    // Should freeze the terminal and keyboard input but doesn't when running as daemon
    ioctl(term,KDSETMODE,KD_GRAPHICS);
    ioctl(term,KDSKBMODE,K_OFF);
    ioctl(term,0x4B51,1);

    sleep(5);

    ioctl(term,KD_TEXT);
    ioctl(term,previousMode);
    ioctl(term,0);

    syslog(LOG_NOTICE,"First daemon terminated.");
    closelog();
    return EXIT_SUCCESS;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)