如何从多线程C ++ Linux应用程序安全地运行Shell脚本?

数学家1975

这是我的问题-我有一个多线程(pthreads)C ++应用程序,其中有一个主控制循环线程和3个数据获取线程(一个串行端口读/写器和两个TCP套接字连接线程)。在程序执行过程中的某些时候,我需要执行一个shell脚本。我做了相当多的研究,发现这system()是一种选择。替代选项似乎表明功能的使用fork()exec()功能族。

我预期的问题是,使用fork()会导致我的流程重复,并且很显然,这将使我对通信线程的运行无止境。由于system()文档表明它fork()在后台使用,这也意味着我不能使用它。

我对如何进行一无所知。是否存在针对此类问题的最佳实践方法?我看到的唯一可能的方法是尝试直接在C ++代码中创建需要运行的Shell脚本的功能。显然,这样做需要的工时是最不希望的选择。我还有其他选择吗?

代码小丑42

我预期的问题是,使用fork()会导致我的进程被复制,并且很显然,这将使我对通信线程的运行没有任何问题。

fork()实际上只复制调用线程来自man fork

请注意以下几点:

子进程是通过一个线程创建的,该线程称为fork()。父级的整个虚拟地址空间都在子级中复制,包括互斥体的状态,条件变量和其他pthreads对象;使用pthread_atfork(3)可能有助于解决可能引起的问题。

也就是说,在后台不会出现一整套新的重复的工作线程破坏。这是POSIX规定的只是不要触摸互斥锁,等等。system()在fork内部要做的第一件事是call exec(),所以这不是问题。选择使用还是自行进行分叉取决于您是要等待子流程完成,还是只是开始并继续进行。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从多线程C ++ Linux应用程序安全地运行Shell脚本?

来自分类Dev

如何管理多线程C#应用程序

来自分类Dev

从C应用程序运行Shell脚本

来自分类Dev

如何在多线程C ++程序中删除对象

来自分类Dev

多线程程序如何在C中工作?

来自分类Dev

如何在多线程 C++ 程序中读取锁

来自分类Dev

如何在多线程应用程序中存储线程

来自分类Dev

C ++多线程-线程安全代码

来自分类Dev

如何在C#应用程序中安全地存储FTP凭据?

来自分类Dev

如何在WPF C#应用程序中安全地部署PPK文件?

来自分类Dev

C#多线程-线程无法运行

来自分类Dev

如何在C ++中的多线程中调用非线程安全DLL?

来自分类Dev

线程安全地通过多线程在c ++中写入流

来自分类Dev

如何在Java桌面应用程序中安全地实现SQL查询

来自分类Dev

如何安全地开放Windows Store应用程序Visual Studio项目的源代码

来自分类Dev

如何让应用程序用户安全地执行任意SELECT语句?

来自分类Dev

如何更安全地存储我的应用程序的登录信息?

来自分类Dev

如何在AppHarbor上安全地存储应用程序的AWS密钥?

来自分类Dev

如何在多线程应用程序中使用Hibernate?

来自分类Dev

如何在IntelliJ中调试多线程应用程序?

来自分类Dev

如何管理 Python Tkinter 应用程序多线程

来自分类Dev

在多线程c#应用程序中嵌入Python

来自分类Dev

多线程时C#JMS应用程序错误

来自分类Dev

rxJava如何使flatMap在多线程上运行

来自分类Dev

什么是多线程程序,它如何工作?

来自分类Dev

如何提高多线程 python 程序的性能?

来自分类Dev

C多线程程序行为说明

来自分类Dev

多线程C程序中的随机函数

来自分类Dev

如何使用谷歌应用程序脚本为谷歌表格制作简单的多线程

Related 相关文章

  1. 1

    如何从多线程C ++ Linux应用程序安全地运行Shell脚本?

  2. 2

    如何管理多线程C#应用程序

  3. 3

    从C应用程序运行Shell脚本

  4. 4

    如何在多线程C ++程序中删除对象

  5. 5

    多线程程序如何在C中工作?

  6. 6

    如何在多线程 C++ 程序中读取锁

  7. 7

    如何在多线程应用程序中存储线程

  8. 8

    C ++多线程-线程安全代码

  9. 9

    如何在C#应用程序中安全地存储FTP凭据?

  10. 10

    如何在WPF C#应用程序中安全地部署PPK文件?

  11. 11

    C#多线程-线程无法运行

  12. 12

    如何在C ++中的多线程中调用非线程安全DLL?

  13. 13

    线程安全地通过多线程在c ++中写入流

  14. 14

    如何在Java桌面应用程序中安全地实现SQL查询

  15. 15

    如何安全地开放Windows Store应用程序Visual Studio项目的源代码

  16. 16

    如何让应用程序用户安全地执行任意SELECT语句?

  17. 17

    如何更安全地存储我的应用程序的登录信息?

  18. 18

    如何在AppHarbor上安全地存储应用程序的AWS密钥?

  19. 19

    如何在多线程应用程序中使用Hibernate?

  20. 20

    如何在IntelliJ中调试多线程应用程序?

  21. 21

    如何管理 Python Tkinter 应用程序多线程

  22. 22

    在多线程c#应用程序中嵌入Python

  23. 23

    多线程时C#JMS应用程序错误

  24. 24

    rxJava如何使flatMap在多线程上运行

  25. 25

    什么是多线程程序,它如何工作?

  26. 26

    如何提高多线程 python 程序的性能?

  27. 27

    C多线程程序行为说明

  28. 28

    多线程C程序中的随机函数

  29. 29

    如何使用谷歌应用程序脚本为谷歌表格制作简单的多线程

热门标签

归档