创建单服务程序集输出的日志文件时出现问题

坦率

mono-service后台在Ubuntu Linux 16.04上以该模式启动时,我们想在用户想要的任何位置创建和存储日志文件。我尝试了这个URL,stackoverflow.com/questions/11024474/capture-mono-service-stdout-console-output

它说的做到这一点:

mono-service2 myservice.exe -l:/var/run/test --debug > log.txt

当我测试以下C ++程序时,这不起作用:

#include <unistd.h>     // execv(), fork()
#include <sys/types.h>  // pid_t
#include <sys/wait.h>   // waitpid()
#include <stdio.h>

int main(int argc, char* argvp)
{
   char *argv[] = { "/usr/lib/mono/4.5/mono-service.exe", 
                    "SmartCamXi_NVR_Recorder.exe", "--debug", "'>&'","/home/venkat/LOGCamster.txt", 0};


    char *envp[] =
    {
        "LD_LIBRARY_PATH=/home/venkat/Debug",
        0
    };
    execve(argv[0], &argv[0], envp);
    fprintf(stderr, "Oops!\n");
    return -1;

}

因为我观察到没有日志文件被创建。我该如何解决此错误?

罗伊马

C程序执行与以下脚本等效的操作:

#!/bin/bash
export LD_LIBRARY_PATH=.
exec /usr/lib/mono/4.5/mono-service.exe Audio_Video_Recorder.exe --debug '>&' LOGCamster.txt
echo "Oops!" >&2
exit 255

注意,>&LOGCamster.txt作为文字参数传递给命令行。具体而言,>&不是由shell解释为“附加标准错误标准输出”,因为没有外壳处理您的命令行。

程序可能不喜欢给出的'>&'参数,并立即退出。

设置LD_LIBRARY_PATH.,会打开一个潜在的巨大安全漏洞。如果我是你,我真的不会那样做。


如果您确实需要通过可执行文件执行此操作,则可以执行以下两项操作之一

  1. 重定向stdoutstderr自己。在这里,您将需要close(1),然后open()到你的日志文件。然后close(2)您可以dup(1)之后,只需执行execve您的程序即可,而无需尝试将输出重定向到任何地方-因为它已经被重定向到日志文件。

  2. 调用外壳程序来解释您的命令。在这里,你需要三个参数:char *argv[] = { "/bin/sh", "-c", "mono-service.exe Audio_Recorder.exe --debug >& log.txt" }但是,如果要执行此操作,则实际上还可以使用脚本,该脚本更易于编写且更易于维护。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用GUI为程序创建ubuntu服务单元文件时出现问题

来自分类Dev

使用GCC将程序集(AT&T)文件与C程序链接时出现问题

来自分类Dev

将输出C程序保存在文件中时出现问题

来自分类Dev

在Powershell中将输出写入文件时出现问题

来自分类Dev

将输出写入文件时出现问题

来自分类Dev

创建HttpClient帮助程序方法时出现问题

来自分类Dev

从Web API服务下载pdf文件时出现问题

来自分类Dev

从Web API服务下载pdf文件时出现问题

来自分类Dev

使用javax createObjectBuilder创建JSON文件时出现问题

来自分类Dev

Android:创建文件时出现问题

来自分类Dev

创建打字稿定义文件时出现问题

来自分类Dev

创建systemd单位文件时出现问题

来自分类Dev

xamarin 表单:创建 IPA 文件时出现问题

来自分类Dev

当操作系统滚动日志文件时,Node.js日志记录会出现问题。

来自分类Dev

输出多个值时出现问题

来自分类Dev

输出多维数组时出现问题

来自分类Dev

输出多维数组时出现问题

来自分类Dev

安装Windows服务时出现问题

来自分类Dev

安装Windows服务时出现问题

来自分类Dev

连接服务时出现问题

来自分类Dev

在 Linux 诊断代理中部署文件日志时出现问题

来自分类Dev

Android:创建目录时出现问题

来自分类Dev

创建存储过程时出现问题

来自分类Dev

重命名文件的程序出现问题

来自分类Dev

重命名文件的程序出现问题

来自分类Dev

在Spark和Scala中创建数据集时出现问题

来自分类Dev

发布组织文件时出现问题

来自分类Dev

Python:读写文件时出现问题

来自分类Dev

从.cpp文件读取时出现问题