帖文详情
avatar
@chn@xn--s8w913fdga.chn.moe

因为没找到,所以计划自己手搓一个简单的凑合用。
计划这样做:一个高权限运行的daemon,负责调度任务;一个用普通用户运行的客户端,负责向daemon提交任务、取消任务等,操作完就关闭。
现在的问题是:两个进程之间如何通信?计划用unix socket(windows最近一两年也已经支持了),因为服务器上需要识别出提交任务时的用户,调度到他的任务时需要切换过去执行。
现在的两个问题是:
1. 除了 unix socket,有没有更合适的ipc方案?性能不需要很高,容易开发、运行稳定最重要。需要可以识别出提交任务时的用户。
2. 用 unix socket 的话,C++有什么适合的高级一些的库?

RE: xn--s8w913fdga.chn....

查看详情

铜锣湾

真正的陈浩南:verified_animate: (@chn)

windows上,有没有类似于slurm那样的任务调度程序?不需要跨节点,本机运行就行。

0
0
0
avatar
@aleksana@bcom.moe

@chn 可以用DBus,还有 @coelacanthus 之前提到的varlink,这些都可以传比较结构化的数据

查看详情
0
0
0
avatar
@chn@xn--s8w913fdga.chn.moe

@aleksana@bcom.moe @coelacanthus@mastodon.yuuta.moe 我今天才知道windows也有移植的dbus。
不过看起来这两种方法都不是特别成熟(指用的人不多)。因为这个是在生产环境中使用的,所以最后决定用boost asio + unix socket,序列化用现成的json库。

查看详情
0
0
0
avatar
@coelacanthus@mastodon.yuuta.moe

@chn @aleksana KDE 那些应用程序倒是在 Windows 上都用 DBus

查看详情
0
0
0
avatar
@chn@xn--s8w913fdga.chn.moe

@coelacanthus@mastodon.yuuta.moe @aleksana@bcom.moe 问一下,dbus有没有什么方法获得对方的用户id?因为要做多用户的支持。
我发现windows上的unix socket似乎没有办法获得客户端的uid。那这个路子就走不通了。

查看详情
0
0
0
avatar
@coelacanthus@mastodon.yuuta.moe

@chn @aleksana Call dbus_message_get_sender() to get the caller's D-Bus id, and then call GetConnectionUnixProcessID to get the pid of the process that sent the message.

查看详情
0
0
0
avatar
@chn@xn--s8w913fdga.chn.moe

@coelacanthus@mastodon.yuuta.moe @aleksana@bcom.moe 话说,dbus底层是用什么通讯的呢?还是说它本身就是一个在内核里实现的功能?
因为windows上的unix socket无法拿到用户uid,这个我写出来代码编译不过才发现,没有任何文档提到这个区别。如果dbus本身是基于unix socket通信的话,我担心windows上dbus也是类似的,会悄悄把拿到用户id的功能给阉割掉。

查看详情
0
0
0
@chn@xn--s8w913fdga.chn.moe
0/472
加载中