C在LINUX

时间:2015-11-21 19:42:49

标签: c linux pipe

我想知道是否可以两次运行相同的程序,并且每次它执行不同的操作。例如,我有两个程序,一个用fifo管道写入,另一个从中读取。所以有programA.c和programB.c(简单程序,只发送一些整数)。 但我想像那样运行它:

./program & sleep 1; ./program

所以一个程序有两种操作模式。

感谢。

2 个答案:

答案 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;
}

如果你编译并运行没有参数的程序,它会告诉你你没有传入任何参数;否则,你可以传入任意数量的命令行参数,它会为你打印出来。

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