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