[root@FC5 tmp]# cat fcntl.c
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int set_fd(int);
int main()
{
int fd,ret;
char f[20];
fd=open("/tmp/pighead.txt",O_RDWR|O_CREAT);
set_fd(fd);
sprintf(f,"%d",fd);
ret=execl("/tmp/test",f,(char *)0);
printf("ret:%d\n",ret);
return 0;
}
int set_fd(int fd)
{
unsigned int flag;
flag=fcntl(fd,F_GETFD);
flag|=~FD_CLOEXEC; //去掉'~'看看
fcntl(fd,F_SETFD,flag);
return 0;
}
[root@FC5 tmp]# cat test.c
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
int main(int argc,char **argv)
{
int fd,ret;
system("echo abc >te.log");
printf("%s:argv[1]:%s\n",argv[0],argv[1]);
fd=atoi(argv[0]);
char str[16];
strcpy(str,"hello,world~\n");
printf("%s\n",str);
ret=write(fd,str,strlen(str));
printf("ret:%d\n",ret);
return 0;
}
|