如何在linux系统中运行多个程序



我正试图在linux系统上从控制台运行代码:三个简单的程序。这是我使用的代码

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <assert.h>
#include <chrono> 
#include <thread>
int main(int argc , char *argv[])
{
if(argc != 2) {
fprintf(stderr,"Usage: cpu <string> n");
exit(1);
}
char *str = argv[1];
while(1){
std::this_thread::sleep_for(std::chrono::milliseconds(1000)); 
printf("%sn",str);
}

return 0;
}

我用编译了代码

gcc -o cpu cpu.c -Wall

我想按照书中所说的那样运行代码。

prompt> ./cpu A & ; ./cpu B & ; ./cpu C & ; ./cpu D &
[1] 7353
[2] 7354
[3] 7355
[4] 7356
A
B
D
C
A
B
D
C
A
C
B
D
...

现在我收到了类似的错误

bob@bobvm:~/codes/OS_3_pieces$ ./cpu A & ; ./cpu B & ; ./cpu C & ; ./cpu D &
bash: syntax error near unexpected token `;'

我的操作系统环境是Ubuntu 20。我想原因是在Ubuntu系统中有一种不同的方式来运行多进程。但我没有找到。那么,如何运行代码以获得与所显示的书相同的输出呢?

我建议改进您的问题,请参阅上面的评论。

然而,我也提供了一个答案。这与Ubuntu无关。它与您的实际代码无关。有多种方法可以在linux shell上启动程序。

  • ./prog只是启动prog,然后返回shell
  • ./prog &启动prog并立即返回shell——当它在后台运行时
  • ./prog1 ; ./prog2启动prog1,完成后启动prog2
  • ./prog1 & ./prog2 &在后台启动prog1,在后台立即启动prog2(因此两者并行运行(
  • ./prog1 && ./prog2启动prog1,当完成时没有错误ONLY,然后启动prog2

还有其他我没有在这里列出的。当然,我的例子只是针对两个程序,数字可以是任意的。此外,每个程序都可以具有参数。

从这一点来看,你的情况很明显出了什么问题。您不能将&;组合在一起——出于您的目的,您只需要&

相关内容

  • 没有找到相关文章

最新更新