#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中運(yùn)行它,以便 d = kp_test_open( argv[1] ); kp_test_close( d ); kp_test_close( d ); 這3行將被激活,我必須以某種方式將argc值更改為2,我可以以某種方式在bash中進(jìn)行操作嗎?當(dāng)我運(yùn)行編譯的腳本時(shí),我使用./test現(xiàn)在我得到了這些結(jié)果Naudojimas:./test failas_ar_katalogas
1 回答

不負(fù)相思意
TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
argc
設(shè)置為調(diào)用程序所使用的參數(shù)數(shù)量,包括argv[0]
(默認(rèn)情況下設(shè)置為程序本身的名稱)。
因此,如果您運(yùn)行:
./yourprogram "some argument"
argc
將為2,因?yàn)?code>yourprogram是一個(gè)參數(shù)(argv[0]
),some argument
是另一個(gè)參數(shù)(argv[1]
)。
添加回答
舉報(bào)
0/150
提交
取消