基于GUI的应用程序是否在后台执行shell命令?

网络劫持

就在两天前,我已经从Windows迁移到Ubuntu 16.04。我喜欢我们自定义Unity桌面的方式。我只是在玩弄桌面环境的外观。就像在Windows中一样,我希望启动器位于屏幕底部。在Googling上,我发现了一条如下所示的命令:

gsettings set com.canonical.Unity.Launcher launcher-position Bottom

另外,还有unity-tweak-tool和dconf编辑器可以完成工作。但是,这些是完成工作的GUI方法。

我的问题是:

  • 这些基于GUI的应用程序还会在后台执行相同的命令吗?
  • 如何窥视这些应用程序的内部工作?我的意思是,有没有一种方法可以真正查看每次单击按钮时正在执行的命令?
  • 这些应用程序是否在后台打开终端并执行这些命令?

这里的答案告诉您如何获取进程的标准文件描述符。但是,我在输出中什么都没有。

而且,该strace -p pid -o output.txt命令向文件中抛出大量文本。

简而言之,使用GUI应用程序进行的操作是否与通过命令行进行操作相同?

塞尔吉(Sergiy Kolodyazhnyy)

这些基于GUI的应用程序还会在后台执行相同的命令吗?

是的,没有。他们将dconf设置写入数据库,但是他们可能会使用不同的方式来进行设置。用Python编写的程序很可能会使用该gi.repository.Gio模块(我知道,因为我经常使用它),或者它们可以gsettings通过调用用作外部命令subprocess.Popen(['gsettings','org.some.schema','some-key','value']),并且基本上可以作为shell命令运行。AC程序将使用类似的东西,可能是一个gio.h库,或者甚至可以使用exec()一系列函数来实现与Popenpython相同的功能因此,回答您的标题问题:“基于GUI的应用程序是否在后台执行shell命令?” 它们可以,但是没有必要,因为有一个应用程序编写语言可以使用的库,而且使用库函数可能比生成新进程要快一些。

为了给您提供有关如何使用库/模块的示例,请随时查看启动器列表指示器的源代码我在那里编写了一个函数,用于创建Gio.Settings的实例,然后根据要在其中使用的列表的类型,使用它来修改Unity启动器。

如何窥视这些应用程序的内部工作?我的意思是,有没有一种方法可以真正查看每次单击按钮时正在执行的命令?

否。如果您想在按按钮或单击窗口元素时查看使用该应用程序的编程语言发出的命令,则不可能。如果有可能,请阅读应用程序的源代码。您可以dconf watch /用来查看正在更改的设置,但不能查看更改的方式。

从技术上讲,如果您知道如何操作调试器,读取内存地址并了解某种汇编语言,则可以知道应用程序在CPU和内存级别上的作用。这称为软件逆向工程,安全专家经常使用它来分析恶意软件并发现合法软件中的漏洞。

这些应用程序是否在后台打开终端并执行这些命令?

不,没有连接终端。许多程序都知道dconf用户数据库所在的位置并在其中写入。还有一个称为的进程间通信总线dbus,程序可以在该总线上发送信号,并且程序将类似于“嘿,这是给我的消息!”

附录

  • 应用程序可以运行其他应用程序吗?是的,这是通过标准调用fork()execve()系统调用完成的。在Linux和其他* nix系统上创建进程的本质很大程度上基于这两个。运行非内置命令的Shell机制使用了很多。交互式运行时

    $ ls 
    

    外壳将通过创建一个新的进程fork(),该进程execve()将开始运行ls因为execve()新的分叉过程将是这样lspipe()系统调用是什么将帮助回读的输出ls我强烈建议阅读我关于“管道和重定向之间的区别是什么”的答案,以了解管道机制的工作原理-它不仅是|运算符,而且实际上是系统调用。

  • 应用程序可以运行shell命令吗?不可以。Shell语法只能由Shell本身理解。但是,您可以做的是使用命令行-c开关启动shell并提供适当的命令。这通常用于在GNOME或其他桌面环境中设置的自定义快捷方式,因为自定义快捷方式可在可执行文件上运行,并且没有外壳可用于理解语法。因此,作为示例,您bash -c 'xdotool key Ctrl+Alt+T'可以间接运行xdotool命令或bash -c 'cd $HOME/Desktop; touch New_File'通过快捷方式在桌面上创建新文件。这是一个非常有趣的示例,因为可以显式地使用外壳程序,因此可以使用外壳程序变量。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于GUI的应用程序是否在后台执行shell命令?

来自分类Dev

当应用程序在后台运行时,Admob是否会执行请求?

来自分类Dev

在后台运行GUI应用程序,稍后再连接

来自分类Dev

在WPF应用程序中在后台执行任务

来自分类Dev

检查Android应用程序是否在后台?

来自分类Dev

在后台检测是否启动了应用程序

来自分类Dev

如何检查应用程序是否在后台运行?

来自分类Dev

如何判断应用程序是否在后台?

来自分类Dev

从Foxx应用程序执行Shell命令

来自分类Dev

如果未关闭应用程序(在后台运行),是否会导致应用程序崩溃?

来自分类Dev

应用程序在后台时的BroadcastReceiver

来自分类Dev

应用程序在后台访问PHPhotoLibrary

来自分类Dev

在后台运行的WPF应用程序

来自分类Dev

使Web应用程序在后台运行

来自分类Dev

应用程序在后台时的BroadcastReceiver

来自分类Dev

在后台启动应用程序

来自分类Dev

应用程序在后台时的 OnClickListener

来自分类Dev

应用程序在后台时的 OnClickListener

来自分类Dev

要访问由Caliburn.Micro应用程序在后台线程上创建的GUI窗口?

来自分类Dev

在应用程序启动时永远在后台执行任务-Android

来自分类Dev

iOS在后台或应用程序激活时执行预定的操作

来自分类Dev

使用launchagents mac os x在后台运行命令行应用程序

来自分类Dev

当应用程序在后台运行时,苹果是否允许声音检测?

来自分类Dev

sencha touch本机应用程序是否仍可以在后台运行?

来自分类Dev

验证应用程序是否将在后台运行或片段将被销毁

来自分类Dev

在后台运行Mono应用程序时是否可以检测到缺少控制台?

来自分类Dev

当应用程序在后台运行时,是否可以控制它?

来自分类Dev

iOS应用程序在后台/已终止时是否持久连接?

来自分类Dev

验证应用程序是否将在后台运行或碎片将被销毁

Related 相关文章

  1. 1

    基于GUI的应用程序是否在后台执行shell命令?

  2. 2

    当应用程序在后台运行时,Admob是否会执行请求?

  3. 3

    在后台运行GUI应用程序,稍后再连接

  4. 4

    在WPF应用程序中在后台执行任务

  5. 5

    检查Android应用程序是否在后台?

  6. 6

    在后台检测是否启动了应用程序

  7. 7

    如何检查应用程序是否在后台运行?

  8. 8

    如何判断应用程序是否在后台?

  9. 9

    从Foxx应用程序执行Shell命令

  10. 10

    如果未关闭应用程序(在后台运行),是否会导致应用程序崩溃?

  11. 11

    应用程序在后台时的BroadcastReceiver

  12. 12

    应用程序在后台访问PHPhotoLibrary

  13. 13

    在后台运行的WPF应用程序

  14. 14

    使Web应用程序在后台运行

  15. 15

    应用程序在后台时的BroadcastReceiver

  16. 16

    在后台启动应用程序

  17. 17

    应用程序在后台时的 OnClickListener

  18. 18

    应用程序在后台时的 OnClickListener

  19. 19

    要访问由Caliburn.Micro应用程序在后台线程上创建的GUI窗口?

  20. 20

    在应用程序启动时永远在后台执行任务-Android

  21. 21

    iOS在后台或应用程序激活时执行预定的操作

  22. 22

    使用launchagents mac os x在后台运行命令行应用程序

  23. 23

    当应用程序在后台运行时,苹果是否允许声音检测?

  24. 24

    sencha touch本机应用程序是否仍可以在后台运行?

  25. 25

    验证应用程序是否将在后台运行或片段将被销毁

  26. 26

    在后台运行Mono应用程序时是否可以检测到缺少控制台?

  27. 27

    当应用程序在后台运行时,是否可以控制它?

  28. 28

    iOS应用程序在后台/已终止时是否持久连接?

  29. 29

    验证应用程序是否将在后台运行或碎片将被销毁

热门标签

归档