草庐IT

c++ - Python 和 C++ 应用程序的简单但快速的 IPC 方法?

我有一个使用Python和C++代码的GNURadio应用程序。我希望能够向事件的C++代码发出信号。如果它们在同一范围内,我通常会使用一个简单的bool值,但代码是分开的,以至于需要某种形式的共享内存。所讨论的代码对性能至关重要,因此需要一种有效的方法。我最初考虑的是Python和C++都可以访问的共享内存段。因此我可以在python代码中设置一个标志并从C++中检查它。因为我只需要一个简单的标志来暂停C++代码,信号量就足够了吗?为了清楚起见,我需要从Python设置一个标志,C++代码将简单地检查这个标志,如果设置了它,则进入一个繁忙的循环。那么尝试在Python/C++之间实现

c++ - 如何让一个进程知道同一程序的其他进程

我必须编写一个程序,它必须知道自己在该机器上运行的另一个实例,并与之通信,然后死掉。我想知道在Linux中是否有一种规范的方法。我的第一个想法是编写一个包含进程PID的文件,并在每次程序执行时查找该文件,但该文件的“正确”位置和名称在哪里?是否有更好或更“正确”的方法?然后我必须沟通,说用户试图运行它,但是由于有另一个实例它会交出工作并退出。我想只发送一个信号,比如SIGUSR1,但这不允许我发送更多信息,比如用户执行第二个进程的X11显示。如何发送此信息?该程序链接到Gtk,因此使用glib的解决方案是可以的。 最佳答案 将pid

c++ - 如何让一个进程知道同一程序的其他进程

我必须编写一个程序,它必须知道自己在该机器上运行的另一个实例,并与之通信,然后死掉。我想知道在Linux中是否有一种规范的方法。我的第一个想法是编写一个包含进程PID的文件,并在每次程序执行时查找该文件,但该文件的“正确”位置和名称在哪里?是否有更好或更“正确”的方法?然后我必须沟通,说用户试图运行它,但是由于有另一个实例它会交出工作并退出。我想只发送一个信号,比如SIGUSR1,但这不允许我发送更多信息,比如用户执行第二个进程的X11显示。如何发送此信息?该程序链接到Gtk,因此使用glib的解决方案是可以的。 最佳答案 将pid

c - 我应该将哪个文件作为 ftok() 的路径名参数传递

在ftok()手册中有提到key_tftok(constchar*pathname,intproj_id);ftok()函数使用由给定路径名命名的文件的标识(必须引用现有的可访问文件)...我对constchar*pathname感到困惑。它的最佳实践是什么?在我当前的系统上,我可以传递"/home/Andrew/anyfile"但我的程序必须在其上运行的其他系统不可能有这个文件。我使用"/etc/hosts/"或"/etc/inittab"怎么样,因为我确信所有此类系统都会有这两个文件?这是个好主意吗?它会引起任何问题吗?我不想要求用户在执行时输入文件名或将文件名作为命令行参数传递。

c - 我应该将哪个文件作为 ftok() 的路径名参数传递

在ftok()手册中有提到key_tftok(constchar*pathname,intproj_id);ftok()函数使用由给定路径名命名的文件的标识(必须引用现有的可访问文件)...我对constchar*pathname感到困惑。它的最佳实践是什么?在我当前的系统上,我可以传递"/home/Andrew/anyfile"但我的程序必须在其上运行的其他系统不可能有这个文件。我使用"/etc/hosts/"或"/etc/inittab"怎么样,因为我确信所有此类系统都会有这两个文件?这是个好主意吗?它会引起任何问题吗?我不想要求用户在执行时输入文件名或将文件名作为命令行参数传递。

linux - 从命令行向程序发送键盘输入

如何将键盘输入发送到程序?就是LinuxGUI下,有没有好的手动(可编程)方式,或者工具,在Linux上运行的程序上模拟键盘输入,这样我就可以发送从命令行,例如“Control-T”到Firefox进程和“echo'hello'\n"到Gnome-Terminal进程,而不实际关注每个那些过程并直接输入? 最佳答案 xdotool如果仅限于焦点窗口,确实有发送击键的方法:WID=`xdotoolsearch"MozillaFirefox"|head-1`xdotoolwindowactivate$WIDxdotoolkeyctrl+

linux - 从命令行向程序发送键盘输入

如何将键盘输入发送到程序?就是LinuxGUI下,有没有好的手动(可编程)方式,或者工具,在Linux上运行的程序上模拟键盘输入,这样我就可以发送从命令行,例如“Control-T”到Firefox进程和“echo'hello'\n"到Gnome-Terminal进程,而不实际关注每个那些过程并直接输入? 最佳答案 xdotool如果仅限于焦点窗口,确实有发送击键的方法:WID=`xdotoolsearch"MozillaFirefox"|head-1`xdotoolwindowactivate$WIDxdotoolkeyctrl+

linux - Linux下进程间最低延迟通知方法

我正在寻找最低的延迟IPC,它允许让一个进程休眠并允许其他进程唤醒它。我正在寻找延迟时间最低的方法。目前一些可能的方法:将一个字节写入管道并从中读取。将一个字节写入套接字并从中读取。发送一个信号(kill)并等待它(sigwait)使用sem_post/sem_wait还有其他更好的想法吗?任何特定于Linux的解决方案也都可以。 最佳答案 一般...操作系统方法之间几乎没有区别。设置:两个进程与两个不同的CPU有关联。一个进程休眠(nanosleep)N微秒测量当前时间然后通知其他进程。其他进程唤醒测量当前时间并将其与客户端时间进

linux - Linux下进程间最低延迟通知方法

我正在寻找最低的延迟IPC,它允许让一个进程休眠并允许其他进程唤醒它。我正在寻找延迟时间最低的方法。目前一些可能的方法:将一个字节写入管道并从中读取。将一个字节写入套接字并从中读取。发送一个信号(kill)并等待它(sigwait)使用sem_post/sem_wait还有其他更好的想法吗?任何特定于Linux的解决方案也都可以。 最佳答案 一般...操作系统方法之间几乎没有区别。设置:两个进程与两个不同的CPU有关联。一个进程休眠(nanosleep)N微秒测量当前时间然后通知其他进程。其他进程唤醒测量当前时间并将其与客户端时间进

c - Linux C : upon receiving a signal, 是否可以知道发送者的PID?

假设我的C程序处理SIGUSR1。当它收到这个信号时,是否可以知道是谁发送的?即,如何获取发送进程的pid? 最佳答案 是的,如果您使用sigaction()调用以设置信号处理程序而不是signal。这样做可以让您设置一个采用三个参数的信号处理程序:一个int,用于信号编号(就像signal)Asiginfo_t*,这是一个包含有关信号源的各种信息的结构,如果适用,还包括发送者的pid。(对于像SIGSEGV这样的自动信号,它还包括一些关于信号原因的信息。)Aucontext_t*,它与获得信号的线程有关。大部分都可以忽略。