c - 在 linux 中编写带有交互式命令行界面的 C 守护程序类型程序

标签 c linux

我编写了一个 c 程序,它在后台运行以执行正在进行的功能。它工作正常,但我想在它运行时从中获取信息。 我使用这些指令使程序成为守护进程: http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html 如何修改程序 C 代码,使其在运行时接受命令行参数?

例子:

$ daemon_program <-- 启动守护程序,它现在在后台运行。

$ daemon_program --status <-- 输入带有参数的守护程序名称,让它向终端输入信息。

$ Status is good <-- daemon_program 将状态写入终端

是否有此类设置的名称?

最佳答案

你的程序会做这样的事情(伪代码):

void main(string[] args) {

    if( args[1] == "-d" ) {

        namedPipe = createNamedPipe("mydaemon");
        startThread( doStuff );

        while( ReadCommandsFromNamedPipe( out command ) ) {
            ExecuteCommand( command );
        }
    }
    else {

        namedPipe = connectToExistingNamedPipe("mydaemon");
        if( namedPipe == null ) die("Daemon is not running");

        while( PromptUserForCommandFromStdIn( out cmd ) ) {
            sendCommandDownNamedPipe( cmd );
            readResponseFromNamedPipe();
        }
    }
}

用法:

>./myDaemon -d
<< MyDaemon now running and listening for commands on named-pipe

> ./myDaemon
<< Please enter an interactive command
> get status
<< blargh

关于c - 在 linux 中编写带有交互式命令行界面的 C 守护程序类型程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40700993/

相关文章:

linux - 堆叠 linux 文件夹内容以显示为一个文件夹

c - 程序未收到所需的输入

c - fscanf 无法读取我在 C 中输入的文件的第一个整数,但读取其余部分

android - 索尼 Z3 平板电脑紧凑型内核编译错误 - board-8974-gpiomux.c - 'gpio_spi_config'

linux - 腻子隧道: Relay access denied

linux - 在用户空间中使用物理上连续的页面

linux - 在 linux 中使用 'sed' 时出现额外字符错误

java - 如何在 CSV 文件或 Excel 文件中获取该目录内的文件路径、名称、创建日期、上次修改日期和文件扩展名?

c# - 如何使用 SetWindowHookEx 从 C# 应用程序注入(inject) native dll(比使用 CreateRemoteThread 注入(inject)更安全)

python - Python如何获取大文件的实时拷贝进度?