int main(int argc , char **argv)
argc至少等于1,当没有参数传入的时候,argc=1
argv[0] 命令argv[1] 第一个参数
argv[2] 第二个参数
.......
(1)打印argc
(2)打印argv[0]
(3)打印test.c原本内容
(4)打印修改后的内容
test.c
<span style="font-size:18px;">123456</span>
test-mmap.c
<span style="font-size:18px;">#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <string.h>
int main(int argc,char **argv)
{
if(argc<2)
{
puts("no file to open");
return 0;
}
int fd=open(argv[1],O_RDWR);
char *start=mmap(NULL,100,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
printf("argc=%d\n",argc);
printf("argv[0]=%s\n",argv[0]);
puts(start);
if(argc<3)
puts("no data to be written");
else
strcpy(start,argv[2]);
puts(start);
munmap(start,100);
close(fd);
return 0;
}
</span>
运行命令 ./a.out test.c
argc=3
argv[0]=./a.out
123456
oh my god