小编jjm*_*mcc的帖子

如何在 Linux 上使用 sudo 在后台运行 dotnet 应用程序?

我遇到了一些我不知道如何解决的奇怪问题。我正在使用 CodeDeploy 将我的应用程序部署到 AWS EC2 实例,在那里我需要指定一个脚本来在我的实例上执行进程,其中一个是 .NET Core 应用程序。

我正在dotnet publishWindows 上发布我的应用程序,并将所需的 dll 复制到 EC2 Linux 实例。

我可以使用该应用程序正常运行,并且其行为符合预期

sudo dotnet application.dll
Run Code Online (Sandbox Code Playgroud)

但是,这只是在我终止应用程序并且不在后台之前。

当我尝试在后台运行我的应用程序时出现问题,以便我可以继续运行其他应用程序或执行其他任务。

我通常使用screennohup在后台运行应用程序,但它似乎不适用于此应用程序。Screen 在脚本中不起作用,nohup 运行应用程序,但抛出错误

要使用我正在使用的 nohup 运行sudo nohup dotnet application.dll &,我在日志中收到错误

Unhandled Exception: System.UnauthorizedAccessException: Access to the path is denied. ---> System.IO.IOException: Bad file descriptor
   --- End of inner exception stack trace ---
   at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
   at Interop.CheckIo(Int64 result, String path, Boolean isDirectory, Func`2 …
Run Code Online (Sandbox Code Playgroud)

linux nohup .net-core

9
推荐指数
2
解决办法
2万
查看次数

游戏服务器应如何接收具有定义滴答速率的udp数据包?

我目前有一个具有可自定义滴答率的游戏服务器,但是对于这个例子,我们建议服务器每秒只能打一次或1hz.我想知道如果客户端发送速率比服务器快,那么处理传入数据包的最佳方法是什么,因为我的当前设置似乎不起作用.

在我的tick函数中,我的udp阻塞接收超时,并且它有效,但是如果客户端滴答率高于服务器,则不接收所有数据包; 只有当前正在阅读的那个.所以基本上服务器丢失了客户端发送的数据包.下图显示了我的问题.

在此输入图像描述

所以我的问题是,这是如何正确完成的?是否有一个单独的线程,其中数据包被不断读取,排队,然后在服务器滴答或处理更好的方式时处理队列?


图片来自视频https://www.youtube.com/watch?v=KA43TocEAWs&t=7s,但演示了我正在解释的内容 在此输入图像描述

architecture networking udp game-engine

6
推荐指数
1
解决办法
392
查看次数

如何将MongoDB驱动程序与C#ASP.NET Core API框架一起使用?

我正在尝试创建一个Web API应用程序,它将从我已经存在的mongo数据库中获取结果,但是这样做时却收到此错误

Could not load type 'System.Runtime.Remoting.Messaging.CallContext' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

An unhandled exception occurred while processing the request.
TypeLoadException: Could not load type 'System.Runtime.Remoting.Messaging.CallContext' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
MongoDB.Driver.Core.Events.EventContext+AsyncLocal.get_Value()
Run Code Online (Sandbox Code Playgroud)
MongoDB.Driver.Core.Events.EventContext+AsyncLocal.get_Value()
MongoDB.Driver.Core.Events.EventContext.BeginOperation(Nullable<long> operationId)
MongoDB.Driver.Core.Operations.FindCommandOperation.Execute(IReadBinding binding, CancellationToken cancellationToken)
MongoDB.Driver.Core.Operations.FindOperation.Execute(IReadBinding binding, CancellationToken cancellationToken)
MongoDB.Driver.OperationExecutor.ExecuteReadOperation<TResult>(IReadBinding binding, IReadOperation<TResult> operation, CancellationToken cancellationToken)
MongoDB.Driver.MongoCollectionImpl.ExecuteReadOperation<TResult>(IClientSessionHandle session, IReadOperation<TResult> operation, ReadPreference readPreference, CancellationToken cancellationToken)
MongoDB.Driver.MongoCollectionImpl.ExecuteReadOperation<TResult>(IClientSessionHandle session, IReadOperation<TResult> operation, CancellationToken cancellationToken)
MongoDB.Driver.MongoCollectionImpl.FindSync<TProjection>(IClientSessionHandle session, FilterDefinition<TDocument> filter, FindOptions<TDocument, TProjection> options, CancellationToken cancellationToken)
MongoDB.Driver.MongoCollectionImpl+<>c__DisplayClass35_0.<FindSync>b__0(IClientSessionHandle session)
MongoDB.Driver.MongoCollectionImpl.UsingImplicitSession<TResult>(Func<IClientSessionHandle, TResult> func, CancellationToken …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net mongodb

5
推荐指数
1
解决办法
2108
查看次数

在调用函数时,ptr**和ptr*之间是否存在差异,或者在C++中是否存在差异?

是否有改变函数中指针的差异或首选方法?以此片段为例

    void change(int** ptr) {
        **ptr = 50;
        *ptr = nullptr;
    }

    void change(int*& ptr) {
        *ptr = 50;
        ptr = nullptr;
    }

    int main()
    {
        int a = 5;

        int* ptr = &a;
        int** ptr2 = &ptr;

        std::cout << "value: " << a << std::endl;
        std::cout << "value: " << ptr << std::endl;
        std::cout << "value: " << ptr2 << std::endl;

        change(ptr2);
        //change(ptr);

        std::cout << "value: " << a << std::endl;
        std::cout << "value: " << ptr << std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ pointers

5
推荐指数
1
解决办法
226
查看次数

如何将nohup输出重定向到指定文件?

我在SO上发现的其他示例中尝试的所有内容似乎均不起作用。我正在尝试使用nohup运行我的应用程序,但是将应用程序的输出附加到文件中。

我尝试了以下一些方法。似乎都不起作用。

nohup dotnet application.dll &> out.log &
nohup dotnet application.dll > out.log 2>&1 &
nohup dotnet application.dll > /opt/out.log &
Run Code Online (Sandbox Code Playgroud)

我总是收到类似

-bash: out.log: Permission denied
Run Code Online (Sandbox Code Playgroud)

我尝试使用sudo运行该应用程序,但它似乎仍然无法正常工作。


nohup dotnet application.dll &
Run Code Online (Sandbox Code Playgroud)

效果很好,但是它将输出定向到其他目录,例如 /home/ubuntu/nohup.out

我究竟做错了什么?

linux bash nohup

4
推荐指数
1
解决办法
3484
查看次数

为什么在通过网络发送数据时,我在两台计算机上收到不同的值?

我有一个客户端 - 服务器架构,客户端在Windows上的C#和Linux上的C++服务器上.我目前正在网络上发送一个整数作为字节,由服务器接收,然后作为字节回送给客户端.

我正在使用构造字节数组

    byte[] rotationBytes = new byte[4];
    rotationBytes[0] = (byte) (rotation >> 24);
    rotationBytes[1] = (byte)(rotation >> 16);
    rotationBytes[2] = (byte)(rotation >> 8);
    rotationBytes[3] = (byte)(rotation);
Run Code Online (Sandbox Code Playgroud)

在服务器上它是使用构造的

    char data[4];

    udp::endpoint senderEndpoint;

    size_t length = udpSocket.receive_from(boost::asio::buffer(data, 4), senderEndpoint);

    int rotation = (int)(data[0] << 24 |
        data[1] << 16 |
        data[2] << 8 |
        data[3]);
Run Code Online (Sandbox Code Playgroud)

当服务器收到某些值时,它会输出不正确的值,但是当在前端打印出该值时,它就是预期的值.下面是一个例子.

Send from C# front end: 45
C++ server receives: 45

Send from C# front end: 90
C++ server receives: 90

Send from C# front …
Run Code Online (Sandbox Code Playgroud)

c++ networking

3
推荐指数
1
解决办法
63
查看次数

如何从C++中的函数正确返回不可修改的对象引用?

我试图从函数返回一个const对象,以便我可以从中获取信息,但一旦创建它就不能改变.我有以下代码

    Sprite const& GetSprite() const {
        return *m_sprite;
    }


    std::unique_ptr<Sprite> m_sprite;
    int test = 5;
Run Code Online (Sandbox Code Playgroud)

代码中的其他地方我正在调用此GetSprite函数

Sprite sprite = entity->GetSprite();
sprite.test = 6;
Run Code Online (Sandbox Code Playgroud)

这似乎编译得很好,并且在单步执行之后test实际上已经改变了.我会假设从返回的对象GetSprite不允许我修改对象,但const限定符似乎被删除了?

我这样做错了还是有不同的方法来实现这个目标?

c++ const pass-by-reference

1
推荐指数
1
解决办法
68
查看次数