使用选定的main()参数在bash中运行程序

#include <stdio.h>

#include <stdlib.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <unistd.h>

int kp_test_open(const char *name);

int kp_test_close(int fd);


int kp_test_open(const char *name){

   int dskr;

   dskr = open( name, O_RDONLY );

   if( dskr == -1 ){

      perror( name );

      exit(1);

   }

   printf( "dskr = %d\n", dskr );

   return dskr;

}


int kp_test_close(int fd){

   int rv;

   rv = close( fd );

   if( rv != 0 ) perror ( "close() failed" );

   else puts( "closed" );

   return rv;

}


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

   int d;

   if( argc != 2 ){

      printf( "Naudojimas:\n %s failas_ar_katalogas\n", argv[0] );

      exit( 255 );

   }

   d = kp_test_open( argv[1] );

   kp_test_close( d );

   kp_test_close( d ); /* turi mesti close klaida */

   return 0;

}

所以我有用C编写的名为test的程序,我想在bash中运行它,以便


 d = kp_test_open( argv[1] );

   kp_test_close( d );

   kp_test_close( d ); 

这3行将被激活,我必须以某种方式将argc值更改为2,我可以以某种方式在bash中进行操作吗?


当我运行编译的脚本时,我使用


./test

现在我得到了这些结果


Naudojimas:

./test failas_ar_katalogas


蛊毒传说
浏览 352回答 1
1回答

不负相思意

argc设置为调用程序所使用的参数数量,包括argv[0](默认情况下设置为程序本身的名称)。因此,如果您运行:./yourprogram&nbsp;"some&nbsp;argument"argc将为2,因为yourprogram是一个参数(argv[0]),some argument是另一个参数(argv[1])。
打开App,查看更多内容
随时随地看视频慕课网APP