如何通过将每个命令分配给线程来在 C++ 中同时执行 linux 个系统命令?
How can I execute linux system commands at same time in C++ by assigning each command to threads?
我想通过将它们分配给两个不同的线程来执行显示相同输出的不同网络命令,它们应该并行执行并使用 c++
使用线程解决这个问题没有意义,因为执行外部实用程序 ("linux system command") 的唯一方法是 fork()
子进程,然后 exec()
实用程序.
由于您不能 exec()
在一个线程内——它会替换整个进程,而不仅仅是调用它的线程——您最好顺其自然并使用多个进程。
您可以根据需要创建任意数量的子进程(在合理范围内),并且 exec()
在每个子进程中创建不同的外部命令。各个进程将 运行 独立。
您可以在线程内执行,如果这是在 unix 上,我假设您可以创建一个函数,调用 pthread_create 并将该函数传递给它。在该函数内只需执行 system_call。然后在线程ids pthread_create returns上做pthread_join,等待它到return。然后您知道它已完成执行,可以退出或继续您的程序。类似的事情也适用于 windows。
我想通过将它们分配给两个不同的线程来执行显示相同输出的不同网络命令,它们应该并行执行并使用 c++
使用线程解决这个问题没有意义,因为执行外部实用程序 ("linux system command") 的唯一方法是 fork()
子进程,然后 exec()
实用程序.
由于您不能 exec()
在一个线程内——它会替换整个进程,而不仅仅是调用它的线程——您最好顺其自然并使用多个进程。
您可以根据需要创建任意数量的子进程(在合理范围内),并且 exec()
在每个子进程中创建不同的外部命令。各个进程将 运行 独立。
您可以在线程内执行,如果这是在 unix 上,我假设您可以创建一个函数,调用 pthread_create 并将该函数传递给它。在该函数内只需执行 system_call。然后在线程ids pthread_create returns上做pthread_join,等待它到return。然后您知道它已完成执行,可以退出或继续您的程序。类似的事情也适用于 windows。