C在LINUX中运行同一程序两次

C在LINUX中运行同一程序两次,c,linux,pipe,C,Linux,Pipe,我想知道是否有可能运行同一个程序两次,每次都做不同的事情。例如,我有两个程序,一个用fifo管道写入,另一个从中读取。所以有programA.c和programB.c(简单的程序,只发送一些整数)。 但我想这样运行: ./program & sleep 1; ./program 因此,一个程序将有两种操作模式 谢谢 是的,这是可能的。你可以任意多次运行一个程序。但是,您可能需要确保同一程序的两个实例不会争夺相同的资源;例如,如果它们都写入同一个文件,则可能会出现意外的结果 如果您希望同

我想知道是否有可能运行同一个程序两次,每次都做不同的事情。例如,我有两个程序,一个用fifo管道写入,另一个从中读取。所以有programA.c和programB.c(简单的程序,只发送一些整数)。 但我想这样运行:

./program & sleep 1; ./program
因此,一个程序将有两种操作模式


谢谢

是的,这是可能的。你可以任意多次运行一个程序。但是,您可能需要确保同一程序的两个实例不会争夺相同的资源;例如,如果它们都写入同一个文件,则可能会出现意外的结果


如果您希望同一程序执行两种不同的操作(一种写入fifo,另一种读取fifo),则必须确保该程序能够确定要执行的操作。一种方法是解析命令行参数(例如,调用一个函数作为
myprog--read
,调用另一个函数作为
myprog--write
。另一个函数是程序首先检查fifo是否存在;如果它不存在,它可以创建fifo并写入,如果它存在,它可以从中读取。

编写程序以接受命令行参数,如sed或啊。 以下是C语言中的一个简单示例:

#include <stdio.h>

int main( int argc, char *argv[] )  {

    if( argc == 1 ) printf("You passed in zero arguments and your program is named %s\n", argv[0]);

    if( argc > 1 ){
        int x;
        for(x = 1; x < argc; x++)
            printf("Argument %d is named %s\n",x, argv[x]); //print multiple arguments
    }

return 0;
}
#包括
int main(int argc,char*argv[]){
如果(argc==1)printf(“您传入了零个参数,并且您的程序名为%s\n”,argv[0]);
如果(argc>1){
int x;
对于(x=1;x
如果您编译并运行这个程序时没有参数,它会告诉您没有传入任何参数;否则,您可以传入任意数量的命令行参数,它会将它们打印出来


关键是这一个程序根据传入它的参数做不同的事情。

是的,您通常会编写程序,使它接受不同的参数。例如,
/program--mode1&&sleep 1&&/program--mode2
。当然,
程序
也可以调用
sleep()
本身。它会在什么基础上做一些不同的事情?它需要一些东西来告诉它,它的行为必须不同,比如不同的参数,或者它检查的不同的外部条件。还要注意,你不能“运行”C文件。它必须被编译。我的坏消息是关于.C,就像我刚才说的,我现在必须编写程序,我正在尝试加入它们。我只是想知道我在代码中能做些什么,这样当我运行第二个时,其他一些代码就会运行。你可以在
程序中有许多函数,并从伪随机数生成器中选择它们。你可以使用C检查进程列表,对
程序的第2、第3等实例有不同的响应。您希望它做什么?我用system()函数解决了这个问题