我想知道是否可以两次运行相同的程序,并且每次它执行不同的操作。例如,我有两个程序,一个用fifo管道写入,另一个从中读取。所以有programA.c和programB.c(简单程序,只发送一些整数)。 但我想像那样运行它:
./program & sleep 1; ./program
所以一个程序有两种操作模式。
感谢。
答案 0 :(得分:1)
是的,有可能。您可以多次运行程序。但是,您可能需要确保同一程序的两个实例不会争用相同的资源;例如,如果它们都写入同一文件,则可能会出现意外结果。
如果您希望同一个程序执行两个不同的操作(一个写入fifo,一个读取它),您必须确保程序可以确定要采取的操作。执行此操作的一种方法是解析命令行参数(例如,将其中一个调用为myprog --read
,将另一个调用为myprog --write
。另一种方法是首先检查程序是否存在fifo;如果它不存在,它可以创建fifo并写入它,如果它确实存在,它可以从中读取。
答案 1 :(得分:1)
编写程序以接受命令行参数,如sed或awk。 这是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;
}
如果你编译并运行没有参数的程序,它会告诉你你没有传入任何参数;否则,你可以传入任意数量的命令行参数,它会为你打印出来。
关键是这个程序根据传递给它的参数做了不同的事情。